Bunlar, tek bir thread üzerinde non-blocking işi ifade etmenin giderek daha güzel yollarıdır; hepsi altta hazır callback'leri her seferinde birer birer çalıştıran bir event loop tarafından yönlendirilir. Birden fazla thread'i değil, kodun ne zaman devam edeceğini yönetirler.
Event loop
Tek thread'li bir döngü, hazır callback'lerden oluşan bir kuyruk tutar. Bir async işlem (timer, I/O) tamamlandığında, callback'i kuyruğa alınır; döngü bir sonrakini alır ve tamamlanana kadar çalıştırır, sonra tekrarlar. Çalışan bir callback'i hiçbir şey kesmez, bu yüzden uzun CPU işi her şeyi bloklar.
