docs: def _read(self, n):
          """
          Read exactly n bytes from the socket
  
          """
          while len(self._read_buffer) < n:
              s = self.sock.recv(65536)
              if not s:
                  raise IOError('Socket closed')
              self._read_buffer += s
  
          result = self._read_buffer[:n]
          self._read_buffer = self._read_buffer[n:]
  
          return result