code: public final Mono<T> timeout(Duration timeout, @Nullable Mono<? extends T> fallback,
  			Scheduler timer) {
  		final Mono<Long> _timer = Mono.delay(timeout, timer).onErrorReturn(0L);
  
  		if(fallback == null) {
  			return onAssembly(new MonoTimeout<>(this, _timer, timeout.toMillis() + "ms"));
  		}
  		return onAssembly(new MonoTimeout<>(this, _timer, fallback));
  	}
docs: Switch to a fallback {@link Mono} in case an item doesn't arrive before the given period,
  as measured on the provided {@link Scheduler}.
  
  <p> If the given {@link Mono} is null, signal a {@link TimeoutException}.
  
  <p>
  <img class="marble" src="doc-files/marbles/timeoutFallbackForMono.svg" alt="">
  
  @param timeout the timeout before the onNext signal from this {@link Mono}
  @param fallback the fallback {@link Mono} to subscribe when a timeout occurs
  @param timer a time-capable {@link Scheduler} instance to run on
  
  @return an expirable {@link Mono} with a fallback {@link Mono}