reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final Flux<T> scan(BiFunction<T, T, T> accumulator) {
		return onAssembly(new FluxScan<>(this, accumulator));
	}
public final Flux<T> scan(BiFunction<T, T, T> accumulator) {
		return onAssembly(new FluxScan<>(this, accumulator));
	}
Reduce this {@link Flux} values with an accumulator {@link BiFunction} and
also emit the intermediate results of this function.
<p>
Unlike {@link #scan(Object, BiFunction)}, this operator doesn't take an initial value
but treats the first {@link Flux} value as initial value.
<br>
The accumulation works as follows:
<pre><code>
result[0] = source[0]
result[1] = accumulator(result[0], source[1])
result[2] = accumulator(result[1], source[2])
result[3] = accumulator(result[2], source[3])
...
</code></pre>

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

@param accumulator the accumulating {@link BiFunction}

@return an accumulating {@link Flux}