Vámi navrhované řešení (ve vaší úpravě) nebude fungovat, protože se nikdy nevzdáte vlákna (takže nelze nikdy zavolat zpětné volání, takže proměnnou nelze nikdy nastavit, takže se vaše smyčka nikdy nepřeruší). Uzel není vícevláknový – vždy existuje pouze jedno vlákno spouštějící javascript v jeden okamžik. Neexistuje žádný způsob, jak toto vlákno získat, než návratem z jakéhokoli spuštěného kódu.
Takže nemůžete dělat, co chcete. Můžete zkusit použít některá z řešení, která v zákulisí přepíšou váš synchronizační kód do asynchronního režimu, ale osobně jsem zjistil, že tento přístup opravdu nestojí za námahu – je lepší to prostě skousnout a prostě to udělat vše se zpětným voláním (časem bolest ustoupí :).