reactor-core/src/main/java/reactor/core/publisher/Mono.java
public final Mono<T> doAfterSuccessOrError(BiConsumer<? super T, Throwable> afterSuccessOrError) {
		return onAssembly(new MonoPeekTerminal<>(this, null, null, afterSuccessOrError));
	}
public final Mono<T> doAfterSuccessOrError(BiConsumer<? super T, Throwable> afterSuccessOrError) {
		return onAssembly(new MonoPeekTerminal<>(this, null, null, afterSuccessOrError));
	}
Add behavior triggered after the {@link Mono} terminates, either by completing downstream successfully or with an error.
The arguments will be null depending on success, success with data and error:
<ul>
<li>null, null : completed without data</li>
<li>T, null : completed with data</li>
<li>null, Throwable : failed with/without data</li>
</ul>

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

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

@return a new {@link Mono}