The "initialization" steps for Web browsers

Domenic Denicola domenic at
Tue Jun 10 18:04:25 PDT 2014

From: Ian Hickson [mailto:ian at] 
> On Tue, 10 Jun 2014, Domenic Denicola wrote:
>> Remember that ES tasks === HTML microtasks (in all implementations today [...]
> That doesn't sound right. If every script is always running on an ES task, then it sounds like an ES task is neither an HTML task nor an HTML microtask. A single HTML task might involve running multiple scripts (some even nested inside each other, with microtasks firing after each of those). For example, consider a task that changes a flag and then fires an event; the event being fired is then handled by a number of event listeners, each of which then fires an ES task to run the script, and after each one there's the microtask queue is flushed, before finally returning back to the main task, and then continuing the event loop.

Hmm. How do we reconcile this with the fact that promises use microtasks in all implementations today? Are they nonconformant with the spec? Or is the spec flexible enough that e.g. PromiseTask ES tasks can be put on a HTML microtask queue, while ones involved in the whole script lifecycle business can be put on the HTML task queue? Engine folks, what are your thoughts?

More information about the es-discuss mailing list