reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final Flux<T> filter(Predicate<? super T> p) {
		if (this instanceof Fuseable) {
			return onAssembly(new FluxFilterFuseable<>(this, p));
		}
		return onAssembly(new FluxFilter<>(this, p));
	}
public final Flux<T> filter(Predicate<? super T> p) {
		if (this instanceof Fuseable) {
			return onAssembly(new FluxFilterFuseable<>(this, p));
		}
		return onAssembly(new FluxFilter<>(this, p));
	}
Evaluate each source value against the given {@link Predicate}. If the predicate test succeeds, the value is
emitted. If the predicate test fails, the value is ignored and a request of 1 is made upstream.

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

@param p the {@link Predicate} to test values against

@reactor.errorMode This operator supports {@link #onErrorContinue(BiConsumer) resuming on errors}
(including when fusion is enabled). Exceptions thrown by the predicate are
considered as if the predicate returned false: they cause the source value to be
dropped and a new element ({@code request(1)}) being requested from upstream.

@reactor.discard This operator discards elements that do not match the filter. It
also discards elements internally queued for backpressure upon cancellation or error triggered by a data signal.

@return a new {@link Flux} containing only values that pass the predicate test