Haskell Pipes - obtenha o valor de retorno do último Proxy no pipeline

Digamos que eu tenho doisProxy em tubos Haskell. Eles representam processos externos do sistema.

produce :: MonadIO m => Producer ByteString m ExitCode
consume :: MonadIO m => Consumer ByteString m ExitCode

Então eu coloco eles em umEffect, como isso:

effect :: Effect m ExitCode
effect = produce >-> consume

esteEffect vai me dar oExitCode desde o primeiroProxy que termina. Normalmente, este será oproduce, não oconsume. Qual é a maneira idiomática de Pipes para obter o valor de retorno doconsume mesmo que não termine primeiro?

Até agora, estou pensando que isso não é possível sem fazer algum tipo de sinalização nojenta para a banda.consume sabe que o fluxo está pronto. A única maneira que o último Proxy sabe desligar é obter algo de umawait, para que eu pudesse enviar um vazioByteString para sinalizar que o fluxo está concluído. Mas isso não parece certo. O que eu tenho agora é um MVar separado que pode fornecer o valor de saída, mas estou pensando que deve haver uma maneira mais idiomática de fazer isso.

questionAnswers(2)

yourAnswerToTheQuestion