Runs the head entry. The queue advances (and the next entry starts) before
the head's promise settles, so anyone resuming on that settlement observes a
consistent queue and does not depend on microtask ordering.
Entries whose f throws synchronously are rejected and the queue advances in
a loop rather than by recursion, so long runs of failing entries cannot
overflow the stack.
Every entry settles regardless of the drained hook: a throwing hook is
isolated and rethrown asynchronously (see notifyDrained).
Runs the head entry. The queue advances (and the next entry starts) before the head's promise settles, so anyone resuming on that settlement observes a consistent queue and does not depend on microtask ordering.
Entries whose
fthrows synchronously are rejected and the queue advances in a loop rather than by recursion, so long runs of failing entries cannot overflow the stack.Every entry settles regardless of the
drainedhook: a throwing hook is isolated and rethrown asynchronously (see notifyDrained).