Read from the input stream into the given buffer.
IMPORTANT: the current model assumes that the protocol will 'own' the
buffer and return a pointer to it in ByteChunk (i.e. the param will
have chunk.getBytes()==null before call, and the result after the call).
chunk - The buffer to read data into.
request - The associated request
The number of bytes that have been added to the buffer or -1 for
end of stream
IOException - If an I/O error occurs reading from the input stream