Future.wait () não pode esperar sem uma fibra (enquanto aguarda outro futuro no Meteor.method)

EmMeteorEstou escrevendo um método que terá que verificar os subdiretórios de um determinado caminho para novos arquivos. Primeiro gostaria de listar apenas os subdiretórios dentroMeteor depois disso euchild_process.exec um script bash simples que lista os arquivos adicionados desde a última vez que foi executado.

Estou tendo alguns problemas para obter a descoberta de diretório para ser assíncrona (Error: Can't wait without a fiber). Eu escrevi uma versão síncrona, mas tendo ambosfs.readdir efs.stat em vez de suas alternativas síncronas me permite pegar erros.

Aqui está o código:

function listDirs(dir, isDir){

    var future1 = new Future();fs.readdir(dir, function(err, files){

            if (err)
                throw new Meteor.error(500, "Error listing files", err);

            var dirs = _.map(files, function(file){

                var future2 = new Future();
                var resolve2 = future2.resolver();

                fs.stat(dir+file, function(err, stats){

                    if (err)
                        throw new Meteor.error(500, "Error statting files", err);

                    if (stats.isDirectory() == isDir && file.charAt(0) !== '.')
                        resolve2(err, file);

                });

                return future2;

            });

            Future.wait(dirs);

            //var result = _.invoke(dirs, 'get');

            future1['return'](_.compact(dirs));
        });

        return future1.wait();
    }

O erroError: Can't wait without a fiber tem a ver comfuture2. Quando eu comentarFuture.wait(dirs) o servidor não falha mais, mas isso é o máximo que eu consegui para tentar resolver isso. : /

Outro_.map A função que uso em outra parte do método funciona bem com os futuros. (Veja tambémhttps://gist.github.com/possibilities/3443021 onde eu encontrei minha inspiração)

questionAnswers(1)

yourAnswerToTheQuestion