ECMAScript® 2024 Language Specification

Draft ECMA-262 / February 15, 2024

9.9 Forward Progress

For an agent to make forward progress is for it to perform an evaluation step according to this specification.

An agent becomes blocked when its running execution context waits synchronously and indefinitely for an external event. Only agents whose Agent Record's [[CanBlock]] field is true can become blocked in this sense. An unblocked agent is one that is not blocked.

Implementations must ensure that:


This, along with the liveness guarantee in the memory model, ensures that all seq-cst writes eventually become observable to all agents.