fails:IO#read_nonblock raises EAGAIN when there is no data
fails:IO#read_nonblock returns at most the number of bytes requested
fails:IO#read_nonblock returns less data if that is all that is available
fails:IO#read_nonblock raises EOFError when the end is reached
