Сделал для себя такое решение.
Со второго или третьего раза скачивание начинается без проблем!
function saveFile() {
console.log("");
let timeStap = new Date();
console.log(arr[counter].from)
const fetch = (isHttpsResource(arr[counter].from)) ? https : http;
const req = fetch.get(arr[counter].from, (res) => {
console.log(arr.length - counter, counter, "Начал качать: ");
console.log("to", arr[counter].to)
let stream = fs.createWriteStream(arr[counter].to);
res.pipe(stream)
res.on('end', () => {
console.log("Сохранил за: ", new Date-timeStap, "мс")
counter++;
clearTimeout(timeout); // Чистим timeout ...
setTimeout(saveFile, 500);
});
});
// Если запрос не пришел в течении 5 секунд то обрываем его.
let timeout = setTimeout(()=>{
req.abort();
}, 5000);
//После обрыва запускаем заново.
req.on("error", (err)=>{
console.log("err", err)
saveFile()
});
}