def METHOD_NAME(request: PipelineRequest, challenger: "PipelineResponse") -> HttpChallenge:
    """Parse challenge from a challenge response, cache it, and return it.
    :param request: The pipeline request that prompted the challenge response.
    :type request: :class:`~azure.core.pipeline.PipelineRequest`
    :param challenger: The pipeline response containing the authentication challenge.
    :type challenger: :class:`~azure.core.pipeline.PipelineResponse`
    :returns: An HttpChallenge object representing the authentication challenge.
    :rtype: HttpChallenge
    """
    challenge = HttpChallenge(
        request.http_request.url,
        challenger.http_response.headers.get("WWW-Authenticate"),
        response_headers=challenger.http_response.headers,
    )
    ChallengeCache.set_challenge_for_url(request.http_request.url, challenge)
    return challenge