reactor-core/src/main/java/reactor/core/publisher/Mono.java
@Nullable
	public T block(Duration timeout) {
		BlockingMonoSubscriber<T> subscriber = new BlockingMonoSubscriber<>();
		Operators.onLastAssembly(this).subscribe(Operators.toCoreSubscriber(subscriber));
		return subscriber.blockingGet(timeout.toMillis(), TimeUnit.MILLISECONDS);
	}
@Nullable
	public T block(Duration timeout) {
		BlockingMonoSubscriber<T> subscriber = new BlockingMonoSubscriber<>();
		Operators.onLastAssembly(this).subscribe(Operators.toCoreSubscriber(subscriber));
		return subscriber.blockingGet(timeout.toMillis(), TimeUnit.MILLISECONDS);
	}
@ Nullable public T block ( Duration timeout ) { BlockingMonoSubscriber < T > subscriber = new BlockingMonoSubscriber <> ( ) ; Operators . onLastAssembly ( this ) . subscribe ( Operators . toCoreSubscriber ( subscriber ) ) ; return subscriber . blockingGet ( timeout . toMillis ( ) , TimeUnit . MILLISECONDS ) ; }
Subscribe to this {@link Mono} and <strong>block</strong> until a next signal is
received or a timeout expires. Returns that value, or null if the Mono completes
empty. In case the Mono errors, the original exception is thrown (wrapped in a
{@link RuntimeException} if it was a checked exception).
If the provided timeout expires,a {@link RuntimeException} is thrown.

<p>
<img class="marble" src="doc-files/marbles/blockWithTimeout.svg" alt="">
<p>
Note that each block() will trigger a new subscription: in other words, the result
might miss signal from hot publishers.

@param timeout maximum time period to wait for before raising a {@link RuntimeException}

@return T the result
Subscribe to this { @link Mono } and <strong > block< / strong > until a next signal is received or a timeout expires . Returns that value or null if the Mono completes empty . In case the Mono errors the original exception is thrown ( wrapped in a { @link RuntimeException } if it was a checked exception ) . If the provided timeout expires a { @link RuntimeException } is thrown .