Durante a implementação de uma aplicação Web reativa, um desenvolvedor utilizou JavaScript moderno com recursos de concorrência não-bloqueante para tratar múltiplas requisições HTTP assíncronas. Contudo, enfrentou dificuldades para lidar com dependência sequencial entre chamadas assíncronas, resultando em um aninhamento excessivo de callbacks. Considerando boas práticas de programação assíncrona em JavaScript, a técnica que permite maior legibilidade, controle de fluxo e redução do aninhamento excessivo é: