reactor-core/src/main/java/reactor/core/publisher/Hooks.java
public static void onEachOperator(Function<? super Publisher<Object>, ? extends Publisher<Object>> onEachOperator) {
		onEachOperator(onEachOperator.toString(), onEachOperator);
	}
public static void onEachOperator(Function<? super Publisher<Object>, ? extends Publisher<Object>> onEachOperator) {
		onEachOperator(onEachOperator.toString(), onEachOperator);
	}
public static void onEachOperator ( Function < ? super Publisher < Object > , ? extends Publisher < Object > > onEachOperator ) { onEachOperator ( onEachOperator . toString ( ) , onEachOperator ) ; }
Add a {@link Publisher} operator interceptor for each operator created
({@link Flux} or {@link Mono}). The passed function is applied to the original
operator {@link Publisher} and can return a different {@link Publisher},
on the condition that it generically maintains the same data type as the original.
Use of the {@link Flux}/{@link Mono} APIs is discouraged as it will recursively
call this hook, leading to {@link StackOverflowError}.
<p>
Note that sub-hooks are cumulative, but invoking this method twice with the same instance
(or any instance that has the same `toString`) will result in only a single instance
being applied. See {@link #onEachOperator(String, Function)} for a variant that
allows you to name the sub-hooks (and thus replace them or remove them individually
later on). Can be fully reset via {@link #resetOnEachOperator()}.
<p>
This pointcut function cannot make use of {@link Flux}, {@link Mono} or
{@link ParallelFlux} APIs as it would lead to a recursive call to the hook: the
operator calls would effectively invoke onEachOperator from onEachOperator.

@param onEachOperator the sub-hook: a function to intercept each operation call
(e.g. {@code map (fn)} and {@code map(fn2)} in {@code flux.map(fn).map(fn2).subscribe()})

@see #onEachOperator(String, Function)
@see #resetOnEachOperator(String)
@see #resetOnEachOperator()
@see #onLastOperator(Function)
Add a { @link Publisher } operator interceptor for each operator created ( { @link Flux } or { @link Mono } ) . The passed function is applied to the original operator { @link Publisher } and can return a different { @link Publisher } on the condition that it generically maintains the same data type as the original . Use of the { @link Flux } / { @link Mono } APIs is discouraged as it will recursively call this hook leading to { @link StackOverflowError } . <p > Note that sub - hooks are cumulative but invoking this method twice with the same instance ( or any instance that has the same toString ) will result in only a single instance being applied . See { @link #onEachOperator ( String Function ) } for a variant that allows you to name the sub - hooks ( and thus replace them or remove them individually later on ) . Can be fully reset via { @link #resetOnEachOperator () } . <p > This pointcut function cannot make use of { @link Flux } { @link Mono } or { @link ParallelFlux } APIs as it would lead to a recursive call to the hook : the operator calls would effectively invoke onEachOperator from onEachOperator .