हे एका single thread वर non-blocking काम व्यक्त करण्याचे क्रमाक्रमाने अधिक चांगले मार्ग आहेत, हे सर्व आतून एका event loop द्वारे चालवले जातात जो एका वेळी एक तयार callback चालवतो. ते code कधी पुन्हा सुरू होतो हे व्यवस्थापित करतात, अनेक threads नाही.
Event loop
एक single-threaded loop तयार 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 → ...
