I think this will cause an error. Basically as soon as you do the first push (above), the stream may call ._read again right away. Even before this next push(null) kicks in. Once you've pushed everything from the request, store some state that says you're done. Then, in the top of _read, check for that state and if it's truthy, push null.

So basically expect ._read to be called twice, instead of expecting to call once and .pushing twice in that one call.