def METHOD_NAME(self, check_type, extra_params=None, response_handler=None):
    # These define which endpoint is hit and which type of check is actually performed
    check_url = f'{self.config.gitlab_url}/-/{check_type}'
    service_check_name = f"gitlab.{check_type}"
    if extra_params:
        check_url = f'{check_url}{extra_params}'
    try:
        self.log.debug("checking %s against %s", check_type, check_url)
        response = self.http.get(check_url)
        # We always want to handle the response even if we do not receive a 200 code.
        # GitLab will return a 503 with a payload if one of the service is down.
        if response_handler:
            response_handler(response)
        if response.status_code != 200:
            self.service_check(
                service_check_name,
                OpenMetricsBaseCheckV2.CRITICAL,
                message=f"Got {response.status_code} when hitting {check_url}",
                tags=self._tags,
            )
        else:
            self.service_check(service_check_name, OpenMetricsBaseCheckV2.OK, self._tags)
    except requests.exceptions.Timeout:
        self.service_check(
            service_check_name,
            OpenMetricsBaseCheckV2.CRITICAL,
            message=f"Timeout when hitting {check_url}",
            tags=self._tags,
        )
    except Exception as e:
        self.service_check(
            service_check_name,
            OpenMetricsBaseCheckV2.CRITICAL,
            message=f"Error hitting {check_url}. Error: {e}",
            tags=self._tags,
        )
    self.log.debug("GitLab check `%s` done", check_type)