¿Cómo escribir una función node.js que espera que se active un evento antes de 'regresar'?

Tengo una aplicación de nodo que esn una aplicación web: completa una serie de tareas asincrónicas antes de regresar 1. Inmediatamente antes de regresar, los resultados del programa se imprimen en la consola.

¿Cómo me aseguro de que todo el trabajo asincrónico se complete antes de regresar? Pude lograr algo similar a esto en una aplicación web asegurándome de todas las tareas que completamos antes de llamar a res.end (), pero no tengo ningún equivalente para un 'evento' final al que llamar antes de permitir que regrese un script.

Vea a continuación mi función (rota) actualmente, intentando esperar hasta que callStack esté vacío. Acabo de descubrir que este es un tipo de enfoque sin sentido porque el nodo espera a que complete ProcessHub antes de ingresar cualquiera de las funciones asincrónicas llamadas en processObjWithRef.

function processHub(hubFileContents){
    var callStack = [];
    var myNewObj = {};
    processObjWithRef(samplePayload, myNewObj, callStack);
    while(callStack.length>0){
        //do nothing
    }
    return 1
}

Nota: He intentado muchas veces anteriormente lograr este tipo de comportamiento con bibliotecas como async (vea mi pregunta relacionada en ¿Cómo puedo hacer esta llamada para solicitar en nodejs síncrono?) así que tenga en cuenta la respuesta y los comentarios allí antes de sugerir cualquier respuesta basada en 'solo use asynch'.

Respuestas a la pregunta(12)

Su respuesta a la pregunta