def request(
        self, 
        method: Literal["GET", "HEAD", "POST", "PUT", "DELETE", "CONNECT", "OPTIONS", "TRACE", "PATCH"],
        url: str, 
        params: Optional[Dict[str, str]] = None, 
        headers: Optional[Dict[str, str]] = None, 
        include_default_headers: bool = False, 
        redirect: bool = False, 
        **kwargs
    ) -> Response:
        """Performs a request with httpx and returns `httpx.Response`."""
        if headers is None:
            headers = {}

        if include_default_headers is True:

            if headers.get("Referer") is None:
                headers.update({"Referer": url})

            headers.update(self.headers)

        try:
            self.logger.debug(
                Colours.ORANGE.apply(method.upper()) + f" -> {hide_ip(url, self.hide_ip)}"
            )

            response = self.__httpx_client.request(
                method = method, 
                url = url, 
                params = params, 
                headers = headers, 
                follow_redirects = redirect, 
                **kwargs
            )

            if response.is_error:
                self.logger.debug(
                    f"{method.upper()} request to '{response.url}' {Colours.RED.apply('failed!')} ({response})"
                )

            return response

        except httpx.ConnectError as e:
            # TODO: I think this needs improving. I see people are getting certificate errors that aren't being caught here.
            if "[SSL: CERTIFICATE_VERIFY_FAILED]" in str(e):
                raise SiteMaybeBlockedError(url, e)

            raise e
Performs a request with httpx and returns `httpx.Response`.
mov_cli/http_client.py