code: static Executor rejectionPropagatingExecutor(
        final Executor delegate, final AbstractFuture<?> future) {
      checkNotNull(delegate);
      checkNotNull(future);
      if (delegate == directExecutor()) {
        // directExecutor() cannot throw RejectedExecutionException
        return delegate;
      }
      return new Executor() {
        boolean thrownFromDelegate = true;
  
        @Override
        public void execute(final Runnable command) {
          try {
            delegate.execute(
                new Runnable() {
                  @Override
                  public void run() {
                    thrownFromDelegate = false;
                    command.run();
                  }
                });
          } catch (RejectedExecutionException e) {
            if (thrownFromDelegate) {
              // wrap exception?
              future.setException(e);
            }
            // otherwise it must have been thrown from a transitive call and the delegate runnable
            // should have handled it.
          }
        }
      };
    }
docs: Returns an Executor that will propagate {@link RejectedExecutionException} from the delegate
  executor to the given {@code future}.
  
  <p>Note, the returned executor can only be used once.