code: def _handle_read_chunk(self):
          
          new_data = b''
          buffer_length = len(self.read_buffer)
          try:
              while buffer_length < self.MAX_BUFFER_SIZE:
                  try:
                      piece = self.recv(4096)
                  except OSError as e:
                      if e.errno == errno.EAGAIN:
                          # End of the available data
                          break
                      elif e.errno == errno.EIO and new_data:
                          # Hopefully we could read an error message before the
                          # actual termination
                          break
                      else:
                          raise
  
                  if not piece:
                      # A closed connection is indicated by signaling a read
                      # condition, and having recv() return 0.
                      break
  
                  new_data += piece
                  buffer_length += len(piece)
  
          finally:
              new_data = new_data.replace(b'\r', b'\n')
              self.read_buffer += new_data
          return new_data
docs: Some data can be read