def METHOD_NAME(self):
    """
    Downloader middleware which returns a response with an specific 'request' attribute.
    * The spider callback should receive the overridden response.request
    * Handlers listening to the response_received signal should receive the overridden response.request
    * The "crawled" log message should show the overridden response.request
    """
    signal_params = {}
    def signal_handler(response, request, spider):
        signal_params["response"] = response
        signal_params["request"] = request
    url = self.mockserver.url("/status?n=200")
    crawler = get_crawler(
        SingleRequestSpider,
        {
            "DOWNLOADER_MIDDLEWARES": {
                ProcessResponseMiddleware: 595,
            }
        },
    )
    crawler.signals.connect(signal_handler, signal=signals.response_received)
    with LogCapture() as log:
        yield crawler.crawl(seed=url, mockserver=self.mockserver)
    response = crawler.spider.meta["responses"][0]
    self.assertEqual(response.request.url, OVERRIDDEN_URL)
    self.assertEqual(signal_params["response"].url, url)
    self.assertEqual(signal_params["request"].url, OVERRIDDEN_URL)
    log.check_present(
        (
            "scrapy.core.engine",
            "DEBUG",
            f"Crawled (200) <GET {OVERRIDDEN_URL}> (referer: None)",
        ),
    )