docs: def request(self, server=None):
          """ Sends the request """
          request = {
              "headers": {"Content-Type": "application/json"},
              "timeout": self._pump.timeout,
              "data": self.context,
          }
  
          url = "{proto}://{server}/{endpoint}".format(
              proto=self._pump.protocol,
              server=server or self.server,
              endpoint=self.ENDPOINT,
          )
  
          response = self._pump._requester(requests.post, url, **request)
  
          try:
              server_data = response.json()
          except ValueError:
              raise ClientException(response.content)
  
          if "error" in server_data:
              raise ClientException(server_data["error"], self.context)
  
          _log.debug("Client registration recieved: %(id)s %(secret)s %(expire)s", {
              "id": server_data["client_id"],
              "secret": server_data["client_secret"],
              "expire": server_data["expires_at"],
          })
  
          return server_data