code: public final Mono<T> doOnSuccessOrError(BiConsumer<? super T, Throwable> onSuccessOrError) {
  		Objects.requireNonNull(onSuccessOrError, "onSuccessOrError");
  		return onAssembly(new MonoPeekTerminal<>(this, null, onSuccessOrError, null));
  	}
docs: 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}