reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final <A> Flux<A> scanWith(Supplier<A> initial, BiFunction<A, ? super T, A>
			accumulator) {
		return onAssembly(new FluxScanSeed<>(this, initial, accumulator));
	}
public final <A> Flux<A> scanWith(Supplier<A> initial, BiFunction<A, ? super T, A>
			accumulator) {
		return onAssembly(new FluxScanSeed<>(this, initial, accumulator));
	}
Reduce this {@link Flux} values with the help of an accumulator {@link BiFunction}
and also emits the intermediate results. A seed value is lazily provided by a
{@link Supplier} invoked for each {@link Subscriber}.
<p>
The accumulation works as follows:
<pre><code>
result[0] = initialValue;
result[1] = accumulator(result[0], source[0])
result[2] = accumulator(result[1], source[1])
result[3] = accumulator(result[2], source[2])
...
</code></pre>

<p>
<img class="marble" src="doc-files/marbles/scanWith.svg" alt="">

@param initial the supplier providing the seed, the leftmost parameter initially
passed to the reduce function
@param accumulator the accumulating {@link BiFunction}
@param <A> the accumulated type

@return an accumulating {@link Flux} starting with initial state