### Question:
MultiConcatArray implements Multi<T> { @Override public void subscribe(Flow.Subscriber<? super T> subscriber) { ConcatArraySubscriber<T> parent = new ConcatArraySubscriber<>(subscriber, sources); subscriber.onSubscribe(parent); parent.nextSource(); } MultiConcatArray(Flow.Publisher<T>[] sources); @Override void subscribe(Flow.Subscriber<? super T> subscriber);  }### Answer:
@Test public void errors() { TestSubscriber<Object> ts = new TestSubscriber<>(Long.MAX_VALUE); Multi.concatArray(Multi.singleton(1), Multi.error(new IOException()), Multi.singleton(2)) .subscribe(ts); ts.assertFailure(IOException.class, 1); }
@Test public void millionSources() { @SuppressWarnings("unchecked") Multi<Integer>[] sources = new Multi[1_000_000]; Arrays.fill(sources, Multi.singleton(1)); TestSubscriber<Object> ts = new TestSubscriber<>(Long.MAX_VALUE); Multi.concatArray(sources) .subscribe(ts); ts.assertItemCount(1_000_000) .assertComplete(); }