docs: def read(self, n):
          """
          Receive *n* bytes from the socket.
  
          Args:
              n(int): The number of bytes to read.
  
          Returns:
              bytes: *n* bytes read from the socket.
  
          Raises:
              EOFError: If the socket was closed.
          """
  
          d = b''
          while n:
              try:
                  block = self._socket.recv(n)
              except socket.error:
                  block = None
              if not block:
                  raise EOFError('Socket closed')
              d += block
              n -= len(block)
          return d