This method should be overridden by a subclass.
This method will be called as needed by Readable. The remaining
argument is an indication of how much data is needed to fill the internal
buffer up to the high water mark, or the current requested amount of data.
This method is called in a cycle until the read cycle is stopped with a
None return or an EOF is indicated, as described below.
If a call to this method returns None, the current read cycle is
ended. This value should be returned when there is no data available at the
moment, but a read request was scheduled and will later be fulfilled by a
call to asyncRead.
If a call to this method returns Data(chunks, eof), chunks will be
added to the internal buffer. If eof is true, the read cycle is ended
and the readable stream signals an EOF (end-of-file). After an EOF, no
further calls will be made. chunks should not be an empty array if eof
is false.
Code inside this method should only call asyncRead (asynchronously from
a callback) or provide data using the return value.