Quantidade de promessas do acelerador abertas em um determinado momento

O Typecript a seguir executa cada chamada paradoSomething(action) um por vez. (O que significa que o segundo item da lista não recebe uma chamada até que o primeiro seja concluído).

async performActionsOneAtATime() {
    for (let action of listOfActions) {
        const actionResult = await doSomethingOnServer(action);
        console.log(`Action Done: ${actionResult}`);
    }
 }

Este enviará todas as solicitações para o servidor imediatamente (sem esperar por nenhuma resposta):

async performActionsInParallel() {
    for (let action of listOfActions) {
        const actionResultPromise = doSomething(action);
        actionResultPromise.then((actionResult) => {
            console.log(`Action Done: ${actionResult}`);
        });
    }
}

Mas o que eu realmente preciso é uma maneira de estrangulá-los. Talvez tenha 10 ou 20 chamadas abertas por vez. (Um de cada vez é muito lento, mas todos os 600 sobrecarregam o servidor.)

Mas estou tendo dificuldade para descobrir isso.

Alguma sugestão de como posso acelerar o número de chamadas para o X abertas por vez?

(Esta pergunta usa TypeScript, mas eu ficaria bem com uma resposta JavaScript ES6.)

questionAnswers(5)

yourAnswerToTheQuestion