def METHOD_NAME(self, url):
    try:
        response = self.http.get(url, headers=self.headers)
        response.raise_for_status()
        return response.json()
    except Timeout as e:
        self.service_check(
            "can_connect",
            AgentCheck.CRITICAL,
            message="Request timeout: {}, {}".format(url, e),
        )
        return
    except (HTTPError, InvalidURL, ConnectionError) as e:
        if (
            isinstance(e, HTTPError)
            and e.response.status_code == 403
            and e.response.json() is not None
            and e.response.json().get("message", "") == "Organization or user has hit GitHub API rate limit"
        ):
            self.service_check(
                "can_connect",
                AgentCheck.WARNING,
                message="Rate limited on GitHub",
            )
        else:
            self.service_check(
                "can_connect",
                AgentCheck.CRITICAL,
                message="Request failed: {}, {}".format(url, e),
            )
            raise
    except JSONDecodeError as e:
        self.service_check(
            "can_connect",
            AgentCheck.CRITICAL,
            message="JSON Parse failed: {}, {}".format(url, e),
        )
        raise
    except ValueError as e:
        self.service_check("can_connect", AgentCheck.CRITICAL, message=str(e))
        raise