As a practical matter, streaming interfaces tend to have to pick arbitrary block sizes of some maximum of how much they read at a time.
My concept for READ was that if you did not qualify it, then it would mean "read everything":
Semantics of READ and TCP Streams: Past And Future
But then you have the question of reading a maximum of a certain number of bytes, vs. reading exactly a certain number of bytes.
A one-byte-at-a-time interface is a good place to start, but all practical streaming code has to enable bigger chunks.
I definitely think that non-trivial layered examples are important to consider.
I also think the design would be very influenced by generator and yielder:
YIELDER and GENERATOR (and thinking about Coroutines)
But I'm trying not to rush those, because the system really needs to stabilize and have things hammered down. There is a lot of "technical debt" that needs to be paid off...