यी एउटै thread मा non-blocking काम व्यक्त गर्ने क्रमशः राम्रा तरिकाहरू हुन्, जुन सबै भित्रबाट एउटा event loop ले चलाउँछ जसले तयार callbacks एक-एक गरी चलाउँछ। तिनले कोड कहिले पुनः सुरु हुन्छ भन्ने व्यवस्थापन गर्छन्, धेरै threads होइन।
Event loop
एउटा single-threaded loop ले तयार callbacks को queue राख्छ। कुनै async operation (timer, I/O) पूरा हुँदा, यसको callback queue मा हालिन्छ; loop ले अर्को उठाउँछ र यसलाई पूरा नहुन्जेल चलाउँछ, अनि दोहोर्याउँछ। चलिरहेको callback लाई केहीले preempt गर्दैन, त्यसैले लामो CPU कामले सबै कुरा block गर्छ।
[event loop] → run callback → I/O finishes → enqueue callback → run next → ...
