implement streaming requests

Now `getReponse()` requires that `done()` was called previously.

I don't require that `done()` be called exactly once because it seems like it might actually be useful to be able to call it multiple times. In particular, it may make sense to call `done()` on both the "end" and the "close" events. I'm currently interpreting "close" as an error, but I couldn't find any documentation indicating that that is always the right interpretation. And it's definitely possible to receive an "end" and a "close" event on the same stream.