code: def _get_conn(self, timeout=None):
          
          conn = None
          try:
              conn = self.pool.get(block=self.block, timeout=timeout)
  
              # If this is a persistent connection, check if it got disconnected
              if conn and conn.sock and select([conn.sock], [], [], 0.0)[0]:
                  # Either data is buffered (bad), or the connection is dropped.
                  log.info("Resetting dropped connection: %s" % self.host)
                  conn.close()
  
          except Empty:
              if self.block:
                  raise EmptyPoolError("Pool reached maximum size and no more "
                                       "connections are allowed.")
              pass  # Oh well, we'll create a new connection then
  
          return conn or self._new_conn()
docs: Get a connection. Will return a pooled connection if one is available.
  
          If no connections are available and :prop:`.block` is ``False``, then a
          fresh connection is returned.
  
          :param timeout:
              Seconds to wait before giving up and raising
              :class:`urllib3.exceptions.EmptyPoolError` if the pool is empty and
              :prop:`.block` is ``True``.