I'm not sure the original reason (this WIP was opened a long time ago). I think part of the reason was due to the fact we can't (yet) implement async file I/O due to language restrictions. Making an explicit API for specific connection types, while adding yet another layer of abstraction, kept users from creating a blocking stream.