આ એક જ thread પર non-blocking કામ વ્યક્ત કરવાની ક્રમશઃ સારી રીતો છે, જે બધી નીચેથી એક event loop દ્વારા ચલાવાય છે જે ready callbacks ને એક સમયે એક ચલાવે છે. તે code ક્યારે ફરી શરૂ થાય તે સંભાળે છે, અનેક threads નહીં.
Event loop
એક single-threaded loop ready callbacks ની queue જાળવે છે. જ્યારે async operation (timer, I/O) પૂરું થાય, ત્યારે તેનો callback enqueue થાય છે; loop આગળનો પસંદ કરે છે અને તેને પૂર્ણ સુધી ચલાવે છે, પછી પુનરાવર્તન કરે છે. ચાલતા callback ને કંઈ preempt કરતું નથી, તેથી લાંબું CPU કામ બધું block કરે છે.
[event loop] → run callback → I/O finishes → enqueue callback → run next → ...
