'Executes downloader mw manager\'s download method and returns
the result (Request or Response) or raise exception in case of
failure.'

def _download(self, request, response=None):

    if (not response):
        response = Response(request.url)
    def download_func(**kwargs):
        return response
    dfd = self.mwman.download(download_func, request, self.spider)
    results = []
    dfd.addBoth(results.append)
    self._wait(dfd)
    ret = results[0]
    if isinstance(ret, Failure):
        ret.raiseException()
    return ret
