reactor-core/src/main/java/reactor/core/publisher/Mono.java
public static <T> Mono<T> fromCompletionStage(Supplier<? extends CompletionStage<? extends T>> stageSupplier) {
		return defer(() -> onAssembly(new MonoCompletionStage<>(stageSupplier.get())));
	}
public static <T> Mono<T> fromCompletionStage(Supplier<? extends CompletionStage<? extends T>> stageSupplier) {
		return defer(() -> onAssembly(new MonoCompletionStage<>(stageSupplier.get())));
	}
public static < T > Mono < T > fromCompletionStage ( Supplier < ? extends CompletionStage < ? extends T > > stageSupplier ) { return defer ( ( ) -> onAssembly ( new MonoCompletionStage <> ( stageSupplier . get ( ) ) ) ) ; }
Create a {@link Mono} that wraps a {@link CompletionStage} on subscription,
emitting the value produced by the {@link CompletionStage}.

<p>
<img class="marble" src="doc-files/marbles/fromFutureSupplier.svg" alt="">
<p>
Note that the completion stage is not cancelled when that Mono is cancelled, but
that behavior can be obtained by using {@link #doFinally(Consumer)} that checks
for a {@link SignalType#CANCEL} and calls eg.
{@link CompletionStage#toCompletableFuture() .toCompletableFuture().cancel(false)}.

@param stageSupplier The {@link Supplier} of a {@link CompletionStage} that will produce a value (or a null to
complete immediately). This allows lazy triggering of CompletionStage-based APIs.
@param <T> type of the expected value
@return A {@link Mono}.
Create a { @link Mono } that wraps a { @link CompletionStage } on subscription emitting the value produced by the { @link CompletionStage } .