Skip to content

Throttle

The Throttle operation limits how often a path gets through. Given a stream of runs it lets one value past per window and drops the rest — either the first value of each window (Leading) or the last one (Trailing). Use it where a chatty producer would otherwise drive an expensive Node on every message.

Throttle operation

Inputs

PortTypeRequiredDescription
>AnyNoOptional gate. When closed, the path stops and no value is recorded.
InAnyYesThe value to pass through. A Nil value fails the Node; its On Error verb resolves the failure.

Outputs

PortTypeDefaultDescription
OutMirrors InNilThe value that got through this window. Takes the type of whatever is connected to In.

Properties

NameTypeDefaultDescription
Window (seconds)Integer10Length of the window, 1–2147483647.
ModeComboLeadingLeading emits the first value of each window and drops the rest. Trailing collects and emits the last value when the window closes.
On ErrorComboStop this branchPer-op On Error verb. A value Throttle cannot throttle never reaches the window, so the Editor offers it the two verbs that write nothing: Stop this branch / Continue with the last value. See the Error Handling guide.

State on Reload

Out is preserved across restarts. The window is not: after a restart the rate limit starts fresh, no timer is re-armed, and a value collected but not yet emitted in Trailing mode is dropped.


  1. Gate check — if the Gate is connected and closed, the path stops here.

  2. Inside a window? — if less than Window (seconds) has passed since the last value got through, the path stops and reports Throttle: value dropped inside the throttle window.

  3. Emit — otherwise the window restarts from now, Out is written, and Throttle starts the path that carries the value downstream.


Runs at t=0s, 1s, 2s, 12s:

tInResult
0 sAOut = A, new path begins
1 sBdropped
2 sCdropped
12 sDOut = D, new path begins

  • Protecting a paid call — a sensor publishing every second need not drive a REST API Call every second. Leading reacts immediately and then holds off.
  • Settling a noisy switch — Trailing waits for the flapping to stop and forwards the value it settled on.
  • Rate-limiting notifications — one message per window, however many events arrived.

Throttle fails when In is unconnected or Nil, reporting Throttle: input is not connected or holds Nil; the Node’s On Error verb resolves the failure.

VerbWhat it does
Stop this branch (default)This Node and its dependents stop; Out keeps its value, and the Node’s last attempt reads as failed — the engine’s record of the Node, not a mark on the port.
Continue with the last valueThe window stands as it was and no path is started; Out keeps its value, not stamped as new.

A value Throttle cannot throttle never reaches the window, so there is nothing for Continue with the fallback to write: putting one through would spend a window on a value nobody sent and start a path carrying it. Throttle’s schema states the two verbs above, and the Editor offers only those.

Dropping a value because the window is still open is not an error — it is a stop, and no verb is consulted.


  • The window is fixed at configuration time and cannot be driven from an input port.
  • One value is carried per Node. To throttle several signals together, pack them with Report first, or use one Throttle per signal.
  • Nothing about the window survives a restart, so the first run after one always gets through.