Я сделал простую загрузку из http-функции, как показано ниже (обработка ошибок опущена для упрощения):
function download(url, tempFilepath, filepath, callback) {
    var tempFile = fs.createWriteStream(tempFilepath);
    http.request(url, function(res) {
        res.on('data', function(chunk) {
            tempFile.write(chunk);
        }).on('end', function() {
            tempFile.end();
            fs.renameSync(tempFile.path, filepath);
            return callback(filepath);
        })
    });
}
 Однако, поскольку я вызываю download() десятки раз асинхронно, он редко сообщает об ошибке на fs.renameSync жалуясь, что не может найти файл на tempFile.path.
Error: ENOENT, no such file or directory 'xxx'
Я использовал тот же список URL-адресов, чтобы проверить его, и он провалил около 30% времени. Тот же список URL-адресов работал при загрузке по одному.
Тестируя еще несколько, я узнал, что следующий код
fs.createWriteStream('anypath');
console.log(fs.exist('anypath'));
console.log(fs.exist('anypath'));
console.log(fs.exist('anypath'));
 не всегда печатает true, но иногда первый ответ печатает false.
 Я подозреваю, что слишком много асинхронных вызовов fs.createWriteStream не могут гарантировать создание файла. Это правда? Существуют ли какие-либо способы гарантировать создание файлов?
