reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final Disposable subscribe(@Nullable Consumer<? super T> consumer, Consumer<? super Throwable> errorConsumer) {
		Objects.requireNonNull(errorConsumer, "errorConsumer");
		return subscribe(consumer, errorConsumer, null);
	}
public final Disposable subscribe(@Nullable Consumer<? super T> consumer, Consumer<? super Throwable> errorConsumer) {
		Objects.requireNonNull(errorConsumer, "errorConsumer");
		return subscribe(consumer, errorConsumer, null);
	}
Subscribe to this {@link Flux} with a {@link Consumer} that will consume all the
elements in the sequence, as well as a {@link Consumer} that will handle errors.
The subscription will request an unbounded demand ({@code Long.MAX_VALUE}).
<p>
For a passive version that observe and forward incoming data see
{@link #doOnNext(java.util.function.Consumer)} and {@link #doOnError(java.util.function.Consumer)}.
<p>For a version that gives you more control over backpressure and the request, see
{@link #subscribe(Subscriber)} with a {@link BaseSubscriber}.
<p>
Keep in mind that since the sequence can be asynchronous, this will immediately
return control to the calling thread. This can give the impression the consumers are
not invoked when executing in a main thread or a unit test for instance.

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

@param consumer the consumer to invoke on each next signal
@param errorConsumer the consumer to invoke on error signal

@return a new {@link Disposable} that can be used to cancel the underlying {@link Subscription}