'Sends PreparedRequest object. Returns Response object.'

def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):

    conn = self.get_connection(request.url, proxies)
    self.cert_verify(conn, request.url, verify, cert)
    url = self.request_url(request, proxies)
    self.add_headers(request, proxies=proxies)
    chunked = (not ((request.body is None) or ('Content-Length' in request.headers)))
    try:
        if (not chunked):
            resp = conn.urlopen(method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout)
        else:
            if hasattr(conn, 'proxy_pool'):
                conn = conn.proxy_pool
            low_conn = conn._get_conn(timeout=timeout)
            low_conn.putrequest(request.method, url, skip_accept_encoding=True)
            for (header, value) in request.headers.items():
                low_conn.putheader(header, value)
            low_conn.endheaders()
            for i in request.body:
                low_conn.send(hex(len(i))[2:].encode('utf-8'))
                low_conn.send('\r\n')
                low_conn.send(i)
                low_conn.send('\r\n')
            low_conn.send('0\r\n\r\n')
            r = low_conn.getresponse()
            resp = HTTPResponse.from_httplib(r, pool=conn, connection=low_conn, preload_content=False, decode_content=False)
    except socket.error as sockerr:
        raise ConnectionError(sockerr)
    except MaxRetryError as e:
        raise ConnectionError(e)
    except (_SSLError, _HTTPError) as e:
        if isinstance(e, _SSLError):
            raise SSLError(e)
        elif isinstance(e, TimeoutError):
            raise Timeout(e)
        else:
            raise
    r = self.build_response(request, resp)
    if (not stream):
        r.content
    return r
