implement streaming responses ♫♫

One thing I'm unsure about here: is `byte[4096]` the optimal type for `HttpParser::buffer`? Perhaps another size or a dynamically growing buffer would be better.
You should probably arrange to reject the promise in the case that it doesn't end up being used. As you've noticed this happens automatically by garbage collection currently, but it'd be a bit cleaner to be explicit, just in case the app has foolishly hung waiting on the promise.