docs: def submit(self, func, *args, **kwargs):
          """Submit a function to the pool, `self.submit(function,arg1,arg2,arg3=3)`"""
  
          with self._shutdown_lock:
              if self._shutdown:
                  raise RuntimeError("cannot schedule new futures after shutdown")
              callback = kwargs.pop("callback", self.default_callback)
              future = NewFuture(
                  self._timeout,
                  args,
                  kwargs,
                  callback=callback,
                  catch_exception=self.catch_exception,
              )
              w = _WorkItem(future, func, args, kwargs)
              self._work_queue.put(w)
              self._adjust_thread_count()
              self._all_futures.add(future)
              return future