Dessa är successivt trevligare sätt att uttrycka icke-blockerande arbete på en enda tråd, alla drivna underliggande av en event-loop som kör redo callbacks en i taget. De styr när kod återupptas, inte flera trådar.
Event-loopen
En enkeltrådad loop upprätthåller en kö av redo callbacks. När en async-operation (timer, I/O) slutförs läggs dess callback i kön; loopen plockar nästa och kör den till slut, och upprepar sedan. Inget avbryter en körande callback, så långt CPU-arbete blockerar allt.
[event loop] → run callback → I/O finishes → enqueue callback → run next → ...
