Escreva uma função para executar um array de tarefas assíncronas com um limite no número de tarefas a serem executadas simultaneamente; os resultados devem ser retornados na ordem do array de tarefas original, independentemente da ordem de conclusão.