Event loop
Il meccanismo che rende JavaScript single-thread ma asincrono: esegue una cosa alla volta e controlla la coda a ogni iterazione.
Quando chiami fetch(), la callback finisce in coda. L'event loop prende la successiva quando quella corrente termina. Se si blocca il thread (un ciclo pesante), tutto si congela. La coda dei microtask (Promise) ha la precedenza su quella dei macrotask (setTimeout).