async def METHOD_NAME(self, request: PipelineRequest) -> PipelineResponse:
    """Authorizes a request with a bearer token, possibly handling an authentication challenge
    :param ~azure.core.pipeline.PipelineRequest request: The pipeline request object.
    :return: The pipeline response object.
    :rtype: ~azure.core.pipeline.PipelineResponse
    """
    _enforce_https(request)
    await self.on_request(request)
    response = await self.next.METHOD_NAME(request)
    if response.http_response.status_code == 401:
        challenge = response.http_response.headers.get("WWW-Authenticate")
        if challenge and await self.on_challenge(request, response, challenge):
            if request.http_request.body and hasattr(request.http_request.body, "read"):
                try:
                    # attempt to rewind the body to the initial position
                    request.http_request.body.seek(0, SEEK_SET)
                except (UnsupportedOperation, ValueError, AttributeError):
                    # if body is not seekable, then retry would not work
                    return response
            response = await self.next.METHOD_NAME(request)
    return response