reactor-core/src/main/java/reactor/core/publisher/Flux.java
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);
	}
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);
	}
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