reactor-core/src/main/java/reactor/core/publisher/Hooks.java
public static void onNextError(BiFunction<? super Throwable, Object, ? extends Throwable> onNextError) {
		Objects.requireNonNull(onNextError, "onNextError");
		log.debug("Hooking new default : onNextError");

		if (onNextError instanceof OnNextFailureStrategy) {
			synchronized(log) {
				onNextErrorHook = (OnNextFailureStrategy) onNextError;
			}
		}
		else {
			synchronized(log) {
				onNextErrorHook = new OnNextFailureStrategy.LambdaOnNextErrorStrategy(onNextError);
			}
		}
	}
public static void onNextError(BiFunction<? super Throwable, Object, ? extends Throwable> onNextError) {
		Objects.requireNonNull(onNextError, "onNextError");
		log.debug("Hooking new default : onNextError");

		if (onNextError instanceof OnNextFailureStrategy) {
			synchronized(log) {
				onNextErrorHook = (OnNextFailureStrategy) onNextError;
			}
		}
		else {
			synchronized(log) {
				onNextErrorHook = new OnNextFailureStrategy.LambdaOnNextErrorStrategy(onNextError);
			}
		}
	}
Set the custom global error mode hook for operators that support resuming
during an error in their {@link org.reactivestreams.Subscriber#onNext(Object)}.
<p>
The hook is a {@link BiFunction} of {@link Throwable} and potentially null {@link Object}.
If it is also a {@link java.util.function.BiPredicate}, its
{@link java.util.function.BiPredicate#test(Object, Object) test} method should be
used to determine if an error should be processed (matching predicate) or completely
skipped (non-matching predicate). Typical usage, as in {@link Operators}, is to
check if the predicate matches and fallback to {@link Operators#onOperatorError(Throwable, Context)}
if it doesn't.

@param onNextError the new {@link BiFunction} to use.