def METHOD_NAME(self, url, method='GET', params=None, data=None, raw=False,
            headers=None, default_encoding='UTF-8', skip_cache=False):
    # XXX proper encode arguments for proper call args -> response
    if self.cachedict and url in self.cachedict and not skip_cache:
        return self.cachedict[url]
    if self.retry:
        retries = Retry(** self.retry_opts)
        self.session.mount(url, HTTPAdapter(max_retries=retries))
    _headers = self.headers.copy()
    _headers.update(headers or {})
    response = self.session.METHOD_NAME(
        method=method,
        url=url,
        params=params,
        data=data,
        proxies=self.getProxies(),
        headers=_headers,
        # some endpoints might fail verification, so it's up to the spider
        # to disable it
        verify=self.ssl_verification,
        timeout=self.requests_timeout,
    )
    data = response.text
    # Somehow requests defaults to ISO-8859-1 (when no encoding
    # specified). Put it back to UTF-8 by default
    if 'charset' not in response.headers:
        if 'Content-Type' in response.headers:
            if 'text' in response.headers['Content-Type']:
                response.encoding = default_encoding
                data = response.text
    if raw:
        data = response.content
    if 'set-cookie' in response.headers:
        self.headers['Cookie'] = response.headers['set-cookie']
    self.last_request = response
    if self.cachedict is not None:
        self.cachedict[url] = data
    return data