gh-1880 + tests

Closes #1880
setTimeout is needed for these tests because https://github.com/joyent/node/blob/master/lib/_stream_readable.js#L902 --- end events are scheduled at least one task away. I'd like to make this unnecessary, but for now it is