reactor-core/src/main/java/reactor/core/publisher/Mono.java
public final Mono<T> doOnSuccessOrError(BiConsumer<? super T, Throwable> onSuccessOrError) {
		Objects.requireNonNull(onSuccessOrError, "onSuccessOrError");
		return onAssembly(new MonoPeekTerminal<>(this, null, onSuccessOrError, null));
	}
public final Mono<T> doOnSuccessOrError(BiConsumer<? super T, Throwable> onSuccessOrError) {
		Objects.requireNonNull(onSuccessOrError, "onSuccessOrError");
		return onAssembly(new MonoPeekTerminal<>(this, null, onSuccessOrError, null));
	}
Add behavior triggered when the {@link Mono} terminates, either by completing successfully or with an error.

<ul>
<li>null, null : completing without data</li>
<li>T, null : completing with data</li>
<li>null, Throwable : failing with/without data</li>
</ul>

<p>
<img class="marble" src="doc-files/marbles/doOnTerminateForMono.svg" alt="">

@param onSuccessOrError the callback to call {@link Subscriber#onNext}, {@link Subscriber#onComplete} without preceding {@link Subscriber#onNext} or {@link Subscriber#onError}

@return a new {@link Mono}