Future.wait () nie może czekać bez światłowodu (czekając na kolejną przyszłość w Meteor.method)

WMeteor, Piszę metodę, która będzie musiała sprawdzić podkatalogi określonej ścieżki w poszukiwaniu nowych plików. Najpierw chciałbym tylko wyświetlić listę podkatalogówMeteor po czym jachild_process.exec prosty skrypt basha, który wyświetla listę plików dodanych od ostatniego uruchomienia.

Mam problemy z asynchronizacją wykrywania katalogu (Error: Can't wait without a fiber). Napisałem wersję synchroniczną, ale obie wersjefs.readdir ifs.stat zamiast synchronicznych alternatyw pozwala mi łapać błędy.

Oto kod:

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();
    }

BłądError: Can't wait without a fiber ma do czynienia zfuture2. Kiedy komentujęFuture.wait(dirs) serwer nie ulega już awarii, ale jest to tak dalece, jak próbowałem to rozwiązać. : /

Inne_.map Funkcja, której używam w innej części metody, działa poprawnie z kontraktami futures. (Zobacz teżhttps://gist.github.com/possunities/3443021 gdzie znalazłem moją inspirację)

questionAnswers(1)

yourAnswerToTheQuestion