reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final <A> Flux<A> scan(A initial, BiFunction<A, ? super T, A> accumulator) {
		Objects.requireNonNull(initial, "seed");
		return scanWith(() -> initial, accumulator);
	}
public final <A> Flux<A> scan(A initial, BiFunction<A, ? super T, A> accumulator) {
		Objects.requireNonNull(initial, "seed");
		return scanWith(() -> initial, accumulator);
	}
Reduce this {@link Flux} values with an accumulator {@link BiFunction} and
also emit the intermediate results of this function.
<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/scan.svg" alt="">

@param initial the initial leftmost argument to pass to the reduce function
@param accumulator the accumulating {@link BiFunction}
@param <A> the accumulated type

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