'Send a given PreparedRequest.'

def send(self, request, **kwargs):

    kwargs.setdefault('stream', self.stream)
    kwargs.setdefault('verify', self.verify)
    kwargs.setdefault('cert', self.cert)
    kwargs.setdefault('proxies', self.proxies)
    if getattr(request, 'prepare', None):
        raise ValueError('You    can    only    send    PreparedRequests.')
    allow_redirects = kwargs.pop('allow_redirects', True)
    stream = kwargs.get('stream')
    timeout = kwargs.get('timeout')
    verify = kwargs.get('verify')
    cert = kwargs.get('cert')
    proxies = kwargs.get('proxies')
    hooks = request.hooks
    adapter = self.get_adapter(url=request.url)
    start = datetime.utcnow()
    r = adapter.send(request, **kwargs)
    r.elapsed = (datetime.utcnow() - start)
    r = dispatch_hook('response', hooks, r, **kwargs)
    extract_cookies_to_jar(self.cookies, request, r.raw)
    gen = self.resolve_redirects(r, request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)
    history = ([resp for resp in gen] if allow_redirects else [])
    if history:
        history.insert(0, r)
        r = history.pop()
        r.history = tuple(history)
    return r
