По какой причине скрипт падает не выдавая ошибку?

Есть такой скрипт:

const initCycleTLS = require('cycletls');
(async () => {
    let arr = new Array(5000).fill(1);
    let promises = arr.map(async () => {
        let cycleTLS = await initCycleTLS().catch(error => console.log('Init CycleTLS error: ' + error));
        if (typeof cycleTLS === 'function')
        {
            await cycleTLS('https://google.com').catch(error => console.log('Request error: ' + error));
            await cycleTLS.exit().catch(error => console.log('Exit CycleTLS error: ' + error));
        }
    });
    await Promise.all(promises);
    console.log('DONE');
})();

При запуске с массивом arr с небольшой длиной все работает нормально, скрипт выводит "DONE" в конце, но при запуске с большим массивом, как в примере он падает молча, либо выдает инфу из catch, но до "DONE" не доходит, хотя все исключения отлавливаются. В чем может быть причина?

P.S. Я знаю что библиотеку нужно использовать иначе, это искусственный пример в котором происходит какой-то совершенно новый для меня баг, понимание которого нужно для образовательных и познавательных целей.


Ответы (1 шт):

Автор решения: nörbörnën

В разделе Пример множественных запросов для Typescript и Javascript показано как использовать экземпляр CycleTLS правильно, на сколько я понимаю - он должен быть единственным:

(async () => {
  const cycleTLS = await initCycleTLS();
  const promises = (new Array(5)).fill(1).map(
    () => cycleTLS('https://google.com', {}, 'get'),
  );
  await Promise.all(promises);
  await cycleTLS.exit();
})().catch(console.error).finally(() => console.log('DONE'));
→ Ссылка