Solusi yang Anda usulkan (dalam suntingan Anda) tidak akan berfungsi karena Anda tidak pernah melepaskan utas (sehingga panggilan balik tidak akan pernah dapat dipanggil, sehingga variabel tidak akan pernah dapat disetel, sehingga loop Anda tidak pernah terputus). Node tidak multi-utas - hanya ada satu utas yang mengeksekusi javascript pada satu waktu. Tidak ada cara untuk menghasilkan utas itu kecuali dengan kembali dari kode apa pun yang sedang berjalan.
Jadi, Anda tidak bisa melakukan apa yang ingin Anda lakukan. Anda dapat mencoba menggunakan beberapa solusi yang menulis ulang kode sinkronisasi Anda ke dalam async di belakang layar, tetapi saya pribadi menemukan bahwa pendekatan itu tidak terlalu sepadan dengan usaha -- lebih baik gigit peluru dan lakukan saja semuanya dengan panggilan balik (dari waktu ke waktu rasa sakit mereda :).