Main thread - one V8 isolate, one event loop
1 pending
2 idle/prep
3 poll · I/O
4 check
5 close
6 timers
one iteration, then back to pending. Since libuv 1.45 (Node 20) timers run at the end of an iteration
Call stackLIFO · 1 at a time
Between-callback queuesdrained before the loop advances
process.nextTick queue (Node) · drains first
microtask queue (V8: Promise, await) · second