pipe<O2> method

Conveyor<F, O2> pipe<O2>(
  1. Conveyor<From<O>, O2> c2
)

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))));