Please consider adding documentation for queuing work into the pipeline as I just spent the better part of a day debugging my own pipeline. In my case, the issue was that I had a for loop Push()ing items into the pipeline, and while the pipeline was running, it could deadlock after just a few items. The solution was to use a go routine to Push() items onto the pipeline so that it wouldn't block listening on the out channel. At least I think that is the solution.
Anyway, please consider adding some documentation for best practices for Push()ing items onto the pipeline.