ECMAScript® 2024 Language Specification

Draft ECMA-262 / July 26, 2023

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:

Note

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