def _make_request(self, conn, method, url, timeout=_Default,<EOL>**httplib_request_kw):
self.num_requests += <NUM_LIT:1><EOL>timeout_obj = self._get_timeout(timeout)<EOL>timeout_obj.start_connect()<EOL>conn.timeout = timeout_obj.connect_timeout<EOL>try:<EOL><INDENT>self._validate_conn(conn)<EOL><DEDENT>except (SocketTimeout, BaseSSLError) as e:<EOL><INDENT>self._raise_timeout(err=e, url=url, timeout_value=conn.timeout)<EOL>raise<EOL><DEDENT>conn.request(method, url, **httplib_request_kw)<EOL>read_timeout = timeout_obj.read_timeout<EOL>if getattr(conn, '<STR_LIT>', None):<EOL><INDENT>if read_timeout == <NUM_LIT:0>:<EOL><INDENT>raise ReadTimeoutError(<EOL>self, url, "<STR_LIT>" % read_timeout)<EOL><DEDENT>if read_timeout is Timeout.DEFAULT_TIMEOUT:<EOL><INDENT>conn.sock.settimeout(socket.getdefaulttimeout())<EOL><DEDENT>else:  <EOL><INDENT>conn.sock.settimeout(read_timeout)<EOL><DEDENT><DEDENT>try:<EOL><INDENT>try:  <EOL><INDENT>httplib_response = conn.getresponse(buffering=True)<EOL><DEDENT>except TypeError:  <EOL><INDENT>httplib_response = conn.getresponse()<EOL><DEDENT><DEDENT>except (SocketTimeout, BaseSSLError, SocketError) as e:<EOL><INDENT>self._raise_timeout(err=e, url=url, timeout_value=read_timeout)<EOL>raise<EOL><DEDENT>http_version = getattr(conn, '<STR_LIT>', '<STR_LIT>')<EOL>log.debug("<STR_LIT>" % (method, url, http_version,<EOL>httplib_response.status,<EOL>httplib_response.length))<EOL>return httplib_response<EOL>
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.