If the underlying read_bufs() call returned a WouldBlock error, TcpStream.read_buf() was erroneously calling self.io.need_write(), when it should actually call self.io.need_read().