Talking with @trevnorris, it sounds like it would be useful to allow a stream to be removed from a pipeline as an optimization.
For example, if a.pipeThrough(b).pipeTo(c), remove b at some point so a goes straight to c.
This optimization is particularly useful if a and c are native C++ implementations and removing b means its not necessary to execute javascript any more.
Potential APIs for this would be b.collapse() or perhaps b could return a special value from its write or read methods signalling it should be removed from the pipe chain.