It's a nice touch that you can hand a readable stream to parser.parse, but it would be even more flexible if the parser was able to act as a writable stream so the stream piping logic could reside in the calling code.
Seems like this is an "emerging pattern" :)