'Returns the response handle'

def _request_webpage(self, url_or_request, video_id, note=None, errnote=None, fatal=True, data=None, headers={}, query={}):

    if (note is None):
        self.report_download_webpage(video_id)
    elif (note is not False):
        if (video_id is None):
            self.to_screen((u'%s' % (note,)))
        else:
            self.to_screen((u'%s:    %s' % (video_id, note)))
    if isinstance(url_or_request, compat_urllib_request.Request):
        url_or_request = update_Request(url_or_request, data=data, headers=headers, query=query)
    else:
        if query:
            url_or_request = update_url_query(url_or_request, query)
        if ((data is not None) or headers):
            url_or_request = sanitized_Request(url_or_request, data, headers)
    try:
        return self._downloader.urlopen(url_or_request)
    except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
        if (errnote is False):
            return False
        if (errnote is None):
            errnote = u'Unable    to    download    webpage'
        errmsg = (u'%s:    %s' % (errnote, error_to_compat_str(err)))
        if fatal:
            raise ExtractorError(errmsg, sys.exc_info()[2], cause=err)
        else:
            self._downloader.report_warning(errmsg)
            return False
