async def METHOD_NAME(
    self, request: PipelineRequest[HTTPRequestType]
) -> PipelineResponse[HTTPRequestType, AsyncHTTPResponseType]:
    """Sends the PipelineRequest object to the next policy.
    Uses redirect settings to send the request to redirect endpoint if necessary.
    :param request: The PipelineRequest object
    :type request: ~azure.core.pipeline.PipelineRequest
    :return: Returns the PipelineResponse or raises error if maximum redirects exceeded.
    :rtype: ~azure.core.pipeline.PipelineResponse
    :raises: ~azure.core.exceptions.TooManyRedirectsError if maximum redirects exceeded.
    """
    redirects_remaining = True
    redirect_settings = self.configure_redirects(request.context.options)
    original_domain = get_domain(request.http_request.url) if redirect_settings["allow"] else None
    while redirects_remaining:
        response = await self.next.METHOD_NAME(request)
        redirect_location = self.get_redirect_location(response)
        if redirect_location and redirect_settings["allow"]:
            redirects_remaining = self.increment(redirect_settings, response, redirect_location)
            request.http_request = response.http_request
            if domain_changed(original_domain, request.http_request.url):
                # "insecure_domain_change" is used to indicate that a redirect
                # has occurred to a different domain. This tells the SensitiveHeaderCleanupPolicy
                # to clean up sensitive headers. We need to remove it before sending the request
                # to the transport layer.
                request.context.options["insecure_domain_change"] = True
            continue
        return response
    raise TooManyRedirectsError(redirect_settings["history"])