code: public static <T> Throwable onNextInnerError(Throwable error, Context context, Subscription subscriptionForCancel) {
  		error = unwrapOnNextError(error);
  		OnNextFailureStrategy strategy = onNextErrorStrategy(context);
  		if (strategy.test(error, null)) {
  			//some strategies could still return an exception, eg. if the consumer throws
  			Throwable t = strategy.process(error, null, context);
  			if (t != null) {
  				subscriptionForCancel.cancel();
  			}
  			return t;
  		}
  		else {
  			return error;
  		}
  	}
docs: Find the {@link OnNextFailureStrategy} to apply to the calling operator (which could be a local
  error mode defined in the {@link Context}) and apply it.
  
  @param error The error.
  @param context The most significant {@link Context} in which to look for an {@link OnNextFailureStrategy}.
  @param subscriptionForCancel The {@link Subscription} that should be cancelled if the
  strategy is terminal. Null to ignore (for poll, use {@link #onNextPollError(Object, Throwable, Context)}
  rather than passing null).
  @param <T> The type of the value causing the error.
  @return a {@link Throwable} to propagate through onError if the strategy is
  terminal and cancelled the subscription, null if not.