Uw voorgestelde oplossing (in uw bewerking) zal niet werken omdat u de thread nooit opgeeft (dus de callback kan nooit worden aangeroepen, dus de variabele kan nooit worden ingesteld, dus uw lus breekt nooit). Node is niet multi-threaded - er is altijd maar één thread die javascript tegelijk uitvoert. Er is geen manier om die thread op te leveren, behalve door terug te keren van welke code dan ook die wordt uitgevoerd.
Je kunt dus niet doen wat je wilt doen. Je zou kunnen proberen om enkele van de oplossingen te gebruiken die je synchronisatiecode achter de schermen herschrijven in asynchrone, maar ik heb persoonlijk ontdekt dat die aanpak niet echt de moeite waard is - dat is het beter om gewoon de kogel te doorbreken en gewoon te doen alles met terugbellen (na verloop van tijd neemt de pijn af :).