code: public static RuntimeException onRejectedExecution(Throwable original,
  			@Nullable Subscription subscription,
  			@Nullable Throwable suppressed,
  			@Nullable Object dataSignal,
  			Context context) {
  		//we "cheat" to apply the special key for onRejectedExecution in onOperatorError
  		if (context.hasKey(Hooks.KEY_ON_REJECTED_EXECUTION)) {
  			context = context.put(Hooks.KEY_ON_OPERATOR_ERROR, context.get(Hooks.KEY_ON_REJECTED_EXECUTION));
  		}
  
  		//don't create REE if original is a reactor-produced REE (not including singletons)
  		RejectedExecutionException ree = Exceptions.failWithRejected(original);
  		if (suppressed != null) {
  			ree.addSuppressed(suppressed);
  		}
  		if (dataSignal != null) {
  			return Exceptions.propagate(Operators.onOperatorError(subscription, ree,
  					dataSignal, context));
  		}
  		return Exceptions.propagate(Operators.onOperatorError(subscription, ree, context));
  	}
docs: Return a wrapped {@link RejectedExecutionException} which can be thrown by the
  operator. This exception denotes that an execution was rejected by a
  {@link reactor.core.scheduler.Scheduler}, notably when it was already disposed.
  <p>
  Wrapping is done by calling both {@link Exceptions#failWithRejected(Throwable)} and
  {@link #onOperatorError(Subscription, Throwable, Object, Context)} (with the passed
  {@link Subscription}).
  
  @param original the original execution error
  @param subscription the subscription to pass to onOperatorError.
  @param suppressed a Throwable to be suppressed by the {@link RejectedExecutionException} (or null if not relevant)
  @param dataSignal a value to be passed to {@link #onOperatorError(Subscription, Throwable, Object, Context)} (or null if not relevant)
  @param context a context that might hold a local error consumer