code: public final Flux<T> timeout(Duration timeout,
  			@Nullable Publisher<? extends T> fallback,
  			Scheduler timer) {
  		final Mono<Long> _timer = Mono.delay(timeout, timer).onErrorReturn(0L);
  		final Function<T, Publisher<Long>> rest = o -> _timer;
  
  		if(fallback == null) {
  			return timeout(_timer, rest, timeout.toMillis() + "ms");
  		}
  		return timeout(_timer, rest, fallback);
  	}
docs: Switch to a fallback {@link Flux} as soon as no item is emitted within the
  given {@link Duration} from the previous emission (or the subscription for the
  first item), as measured on the specified {@link Scheduler}.
  <p>
  If the given {@link Publisher} is null, signal a {@link TimeoutException} instead.
  
  <p>
  <img class="marble" src="doc-files/marbles/timeoutFallbackForFlux.svg" alt="">
  
  @param timeout the timeout {@link Duration} between two signals from this {@link Flux}
  @param fallback the fallback {@link Publisher} to subscribe when a timeout occurs
  @param timer a time-capable {@link Scheduler} instance to run on
  
  @return a {@link Flux} that will fallback to a different {@link Publisher} in case of a per-item timeout