pipe<O2> method
Implementation
Conveyor<F, O2> pipe<O2>(Conveyor<From<O>, O2> c2) =>
c2.interpret((h, t) => produce(h, pipe(t)),
(req, recv) =>
this.interpret((h, t) => t.pipe(Try(() => recv(right(h)))),
(req0, recv0) => consume(req0, (ea) => recv0(ea).pipe(c2)),
(err) => halt<F, O>(err).pipe(recv(left(err)))),
(err) => kill<O2>().onHalt((err2) => halt<F, O2>(err).plus(halt(err2))));