Skip to main content


Structured concurrency and effects for JavaScript
Go to Latest
function suspend
import { suspend } from "";

Indefinitely pause execution of the current operation. It is typically used in conjunction with an action to mark the boundary between setup and teardown.

function onEvent(listener, name) {
  return action(function* (resolve) {
    try {
      listener.addEventListener(name, resolve);
      yield* suspend();
    } finally {
      listener.removeEventListener(name, resolve);

An operation will remain suspended until its enclosing scope is destroyed, at which point it proceeds as though return had been called from the point of suspension. Once an operation suspends once, further suspend operations are ignored.



an operation that suspends the current operation