reactor-core/src/main/java/reactor/core/publisher/Mono.java
public final <R> Mono<R> flatMap(Function<? super T, ? extends Mono<? extends R>>
			transformer) {
		return onAssembly(new MonoFlatMap<>(this, transformer));
	}
public final <R> Mono<R> flatMap(Function<? super T, ? extends Mono<? extends R>>
			transformer) {
		return onAssembly(new MonoFlatMap<>(this, transformer));
	}
public final < R > Mono < R > flatMap ( Function < ? super T , ? extends Mono < ? extends R > > transformer ) { return onAssembly ( new MonoFlatMap <> ( this , transformer ) ) ; }
Transform the item emitted by this {@link Mono} asynchronously, returning the
value emitted by another {@link Mono} (possibly changing the value type).

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

@param transformer the function to dynamically bind a new {@link Mono}
@param <R> the result type bound

@return a new {@link Mono} with an asynchronously mapped value.
Transform the item emitted by this { @link Mono } asynchronously returning the value emitted by another { @link Mono } ( possibly changing the value type ) .