Implementar fluxo de controle de bloqueio no NodeJS

Estou tentando criar um fluxo de controle de bloqueio, mas atingi um beco sem saída. A idéia é que uma solicitação entre e flua através de várias funções de manipulador. Cada função faz alguma coisa e decide se a solicitação será ou não cumprida. Se for, a manipulação será interrompida; caso contrário, o próximo manipulador será chamado. Cada manipulador pode ou não fazer algo de forma assíncrona (como buscar / gravar dados). Se for esse o caso, os manipuladores a seguir dependem dos dados existentes antes de serem iniciados.

Até agora, tenho duas idéias, que ambas não atendem exatamente a esses requisitos: 1) Todos os manipuladores são funções, que são empurradas para uma matriz e iteradas comsome . Se um manipulador deseja interromper o fluxo de controle, ele simplesmente precisa retornartrue. Com essa abordagem, não posso ter nenhum dos manipuladores invocando funções assíncronas.

2) Todos os manipuladores são promessas encadeadas. Parece-me uma ideia melhor, mas não consigo descobrir como lidar melhor com a interrupção do fluxo de controle. Tenho duas idéias: - Mantenha uma variável definida comotrue uma vez que um manipulador decida interromper o fluxo. Verifique esse valor em cada manipulador e resolva imediatamente, se necessário. Isso significa muito código duplicado. - Rejeitar uma promessa se não desejar continuar o fluxo normal e continuar emcatch. No entanto, o pensamento de usar erros como um meio de controlar o fluxo me incomoda - e também significa que eu tenho que lidar com o caso em que a captura é invocada devido a um erro real.

Meus sentidos sórdidos me dizem que tem que haver outra maneira, mas não consigo descobrir.

questionAnswers(2)

yourAnswerToTheQuestion