reactor-core/src/main/java/reactor/core/publisher/Mono.java
public final Mono<T> doOnEach(Consumer<? super Signal<T>> signalConsumer) {
		Objects.requireNonNull(signalConsumer, "signalConsumer");
		if (this instanceof Fuseable) {
			return onAssembly(new MonoDoOnEachFuseable<>(this, signalConsumer));
		}
		return onAssembly(new MonoDoOnEach<>(this, signalConsumer));

	}
public final Mono<T> doOnEach(Consumer<? super Signal<T>> signalConsumer) {
		Objects.requireNonNull(signalConsumer, "signalConsumer");
		if (this instanceof Fuseable) {
			return onAssembly(new MonoDoOnEachFuseable<>(this, signalConsumer));
		}
		return onAssembly(new MonoDoOnEach<>(this, signalConsumer));

	}
Add behavior triggered when the {@link Mono} emits an item, fails with an error
or completes successfully. All these events are represented as a {@link Signal}
that is passed to the side-effect callback. Note that this is an advanced operator,
typically used for monitoring of a Mono.
These {@link Signal} have a {@link Context} associated to them.
<p>
<img class="marble" src="doc-files/marbles/doOnEachForMono.svg" alt="">

@param signalConsumer the mandatory callback to call on
{@link Subscriber#onNext(Object)}, {@link Subscriber#onError(Throwable)} and
{@link Subscriber#onComplete()}
@return an observed {@link Mono}
@see #doOnNext(Consumer)
@see #doOnError(Consumer)
@see #materialize()
@see Signal