Returns the maximum number of bytes that are known to remain in this stream until the
end is reached. After leastSize() bytes have been read, the stream will either have
reached EOS and empty() returns true, or leastSize() returns again a number > 0.
Returns a temporary reference to the data that is currently buffered.
The returned slice typically has the size leastSize() or 0 if
dataAvailableForRead() returns false. Streams that don't have an
internal buffer will always return an empty slice.
Note that any method invocation on the same stream potentially
invalidates the contents of the returned buffer.