fun <T> mono(
    context: CoroutineContext = EmptyCoroutineContext,
    block: suspend CoroutineScope.() -> T?
): Mono<T>

Creates cold mono that will run a given block in a coroutine and emits its result. Every time the returned mono is subscribed, it starts a new coroutine. If block result is null, MonoSink.success is invoked without a value. Unsubscribing cancels running coroutine.

Coroutine context can be specified with context argument. If the context does not have any dispatcher nor any other ContinuationInterceptor, then Dispatchers.Default is used.

Method throws IllegalArgumentException if provided context contains a Job instance.