A stream may be composed by several substreams.
Thus a stream is either something that contains the current buffer and
a function to retrieve the following data,
or a finished stream with possibly another stream following.