El event loop es el mecanismo que permite que Node.js, siendo de un solo hilo, realice I/O no bloqueante. Procesa continuamente una cola de callbacks: mientras tu JavaScript se ejecuta en un hilo, las operaciones de I/O se delegan y sus callbacks se ejecutan en el loop cuando se completan.
Las fases del loop
Cada iteración ("tick") avanza por fases ordenadas, cada una con su propia cola de callbacks:
┌───────────────────────────┐
┌─>│ timers (setTimeout) │ ← callbacks de timers vencidos
│ ├───────────────────────────┤
│ │ pending I/O callbacks │
│ ├───────────────────────────┤
│ │ poll (I/O events) │ ← recupera nuevo I/O; ejecuta sus callbacks
│ ├───────────────────────────┤
│ │ check (setImmediate) │
│ ├───────────────────────────┤
└──│ close callbacks │
└───────────────────────────┘
