'Perform a request on a given urllib connection object taken from our
pool.
:param conn:
a connection from one of our connection pools
:param timeout:
Socket timeout in seconds for the request. This can be a
float or integer, which will set the same timeout value for
the socket connect and the socket read, or an instance of
:class:`urllib3.util.Timeout`, which gives you more fine-grained
control over your timeouts.'

def _make_request(self, conn, method, url, timeout=_Default, **httplib_request_kw):

    self.num_requests += 1
    timeout_obj = self._get_timeout(timeout)
    try:
        timeout_obj.start_connect()
        conn.timeout = timeout_obj.connect_timeout
        conn.request(method, url, **httplib_request_kw)
    except SocketTimeout:
        raise ConnectTimeoutError(self, ('Connection    to    %s    timed    out.    (connect    timeout=%s)' % (self.host, timeout_obj.connect_timeout)))
    read_timeout = timeout_obj.read_timeout
    if hasattr(conn, 'sock'):
        if (read_timeout == 0):
            raise ReadTimeoutError(self, url, ('Read    timed    out.    (read    timeout=%s)' % read_timeout))
        if (read_timeout is Timeout.DEFAULT_TIMEOUT):
            conn.sock.settimeout(socket.getdefaulttimeout())
        else:
            conn.sock.settimeout(read_timeout)
    try:
        try:
            httplib_response = conn.getresponse(buffering=True)
        except TypeError:
            httplib_response = conn.getresponse()
    except SocketTimeout:
        raise ReadTimeoutError(self, url, ('Read    timed    out.    (read    timeout=%s)' % read_timeout))
    except BaseSSLError as e:
        if (('timed    out' in str(e)) or ('did    not    complete    (read)' in str(e))):
            raise ReadTimeoutError(self, url, 'Read    timed    out.')
        raise
    except SocketError as e:
        if (e.errno in _blocking_errnos):
            raise ReadTimeoutError(self, url, ('Read    timed    out.    (read    timeout=%s)' % read_timeout))
        raise
    http_version = getattr(conn, '_http_vsn_str', 'HTTP/?')
    log.debug(('"%s    %s    %s"    %s    %s' % (method, url, http_version, httplib_response.status, httplib_response.length)))
    return httplib_response
