code: public final Mono<T> doAfterSuccessOrError(BiConsumer<? super T, Throwable> afterSuccessOrError) {
  		return onAssembly(new MonoPeekTerminal<>(this, null, null, afterSuccessOrError));
  	}
docs: 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}