code: public final <U, V> Flux<Flux<T>> windowWhen(Publisher<U> bucketOpening,
  			final Function<? super U, ? extends Publisher<V>> closeSelector) {
  		return onAssembly(new FluxWindowWhen<>(this,
  				bucketOpening,
  				closeSelector,
  				Queues.unbounded(Queues.XS_BUFFER_SIZE)));
  	}
docs: Split this {@link Flux} sequence into potentially overlapping windows controlled by items of a
  start {@link Publisher} and end {@link Publisher} derived from the start values.
  
  <p>
  When Open signal is strictly not overlapping Close signal : dropping windows
  <p>
  When Open signal is strictly more frequent than Close signal : overlapping windows
  <p>
  When Open signal is exactly coordinated with Close signal : exact windows
  <p>
  <img class="marble" src="doc-files/marbles/windowWhen.svg" alt="">
  
  @reactor.discard This operator DOES NOT discard elements.
  
  @param bucketOpening a {@link Publisher} that opens a new window when it emits any item
  @param closeSelector a {@link Function} given an opening signal and returning a {@link Publisher} that
  will close the window when emitting
  
  @param <U> the type of the sequence opening windows
  @param <V> the type of the sequence closing windows opened by the bucketOpening Publisher's elements
  
  @return a {@link Flux} of {@link Flux} windows opened by signals from a first
  {@link Publisher} and lasting until a selected second {@link Publisher} emits