docs: def enqueue(self):
      """
      Mark the future as being enqueued in some kind of executor for futures.
      Calling :meth:`start()` with the *as_thread* parameter as :const:`True`
      will raise a :class:`RuntimeError` after this method has been called.
  
      This method will also validate the state of the future.
      """
  
      with self._lock:
        if self._enqueued:
          raise RuntimeError('Future object is already enqueued')
        if self._running:
          raise RuntimeError('Future object is already running')
        if self._completed:
          raise RuntimeError('Future object can not be restarted')
        if not self._worker:
          raise RuntimeError('Future object is not bound')
        self._enqueued = True