¿Cómo llamar a un método asíncrono desde Meteor propio callbacks?

Acabo de pasar unas horas leyendo SO con respuestas comoMeteor: Llamar a una función asíncrona dentro de un método Meteor y devolver el resultado

Desafortunadamente, todavía no logré usar fibras, o futuros, para el caso.

Estoy tratando de hacer algo bastante simple (creo!).

Al crear un usuario, agregue una variable al objeto de usuario, basándose en el resultado de un método asíncrono. Entonces, imagínese si se llama a mi método asíncrono en un servidor de terceros llamado BANK, que podría tardar varios segundos en volver.

Accounts.onCreateUser(function(options,user){

var Fiber = Npm.require("fibers");

Fiber(function() { 
    BANK.getBalance(function(err, theBalance) {

        if (err) return console.log(err);

        _.extend(user,{
            balance: theBalance;
        });

    });
}).run();

return user;

});

Entonces, lo que ocurre anteriormente es que se llama al método BANK, pero en el momento en que retorna, el código ya se ha movido y nunca se invoca _.extend.

Intenté colocar la llamada de retorno dentro de la Fibra, que solo empeoró las cosas: nunca devolvió al usuario. Bueno, lo hizo, pero 3 segundos demasiado tarde, así que para entonces todo lo que estaba río abajo se estaba escapando.

¡Gracias por cualquier ayuda!

Respuestas a la pregunta(4)

Su respuesta a la pregunta