How does the Node.js event loop differ from the browser event loop?
Node uses libuv and phases its loop: timers, pending callbacks, poll, check (setImmediate) and close callbacks, with process.nextTick and promise microtasks draining between phases.
Differences from the browser:
- Node has setImmediate (runs in the check phase) and process.nextTick (runs before promises).
- No DOM or rendering; instead there is filesystem, network, crypto and worker threads.
- Microtasks run after each phase callback, and nextTick has highest priority.
Ordering: nextTick > promise microtasks > setImmediate/timers (relative order of setImmediate and setTimeout(0) can vary).