Retorno de chamada de loop for e assíncrono em node.js?

Eu sou novo no JavaScript e no node.js. Eu quero percorrer um diretório e adicionar todos os stat de arquivo (não outros diretórios) a uma matriz. Como você vê abaixo, há um problema com meu código, pois o retorno de chamada provavelmente será chamado após a conclusão do loop for, portanto, a variável "i" no método de retorno de chamada não funcionará. Mas como deve ser o código para que o trecho abaixo funcione? Tem algo a ver com fechamentos?

Obrigado pela ajuda!

    fs.readdir(SYNCDIR, function(err1, files) {
        var filesOnly = [];

        if(!err1) {

            for(var i = 0; i < files.length; i++) {

                var imgFilePath = SYNCDIR + '/' + files[i];
                fs.stat(imgFilePath, function(stat){

                    if (stat.isFile()){
                        filesOnly[i] = stat; // This will not be correct since the for-loop has finished
                    }
                });

            }
        }
    });

questionAnswers(3)

yourAnswerToTheQuestion