code: def read(self, size=-1):
      
      if size < 0:
        offset = len(self._buffer)
      else:
        offset = self._offset + size
      return self.read_to_offset(offset)
docs: Returns bytes from self._buffer and update related offsets.
  
      Args:
        size: number of bytes to read starting from current offset.
          Read the entire buffer if negative.
  
      Returns:
        Requested bytes from buffer.