reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final <C extends Collection<? super T>> Flux<C> bufferTimeout(int maxSize, Duration maxTime, Supplier<C> bufferSupplier) {
		return bufferTimeout(maxSize, maxTime, Schedulers.parallel(),
				bufferSupplier);
	}
public final <C extends Collection<? super T>> Flux<C> bufferTimeout(int maxSize, Duration maxTime, Supplier<C> bufferSupplier) {
		return bufferTimeout(maxSize, maxTime, Schedulers.parallel(),
				bufferSupplier);
	}
Collect incoming values into multiple user-defined {@link Collection} buffers that
will be emitted by the returned {@link Flux} each time the buffer reaches a maximum
size OR the maxTime {@link Duration} elapses.
<p>
<img class="marble" src="doc-files/marbles/bufferTimeoutWithMaxSizeAndTimespan.svg" alt="">

@reactor.discard This operator discards the currently open buffer upon cancellation or error triggered by a data signal.

@param maxSize the max collected size
@param maxTime the timeout enforcing the release of a partial buffer
@param bufferSupplier a {@link Supplier} of the concrete {@link Collection} to use for each buffer
@param <C> the {@link Collection} buffer type
@return a microbatched {@link Flux} of {@link Collection} delimited by given size or a given period timeout