@Test
    @Override
    public void optional_spec104_mustSignalOnErrorWhenFails() {
        try {
            final TestEnvironment env = new TestEnvironment(200);
            whenHasErrorPublisherTest(pub -> {
                final TestEnvironment.Latch onErrorLatch = new TestEnvironment.Latch(env);
                final TestEnvironment.Latch onSubscribeLatch = new TestEnvironment.Latch(env);
                pub.subscribe(new TestEnvironment.TestSubscriber<Object>(env) {
                    @Override
                    public void onSubscribe(Subscription subs) {
                        onSubscribeLatch.assertOpen("Only one onSubscribe call expected");
                        onSubscribeLatch.close();
                        subs.request(Long.MAX_VALUE);
                    }

                    @Override
                    public void onError(Throwable cause) {
                        onSubscribeLatch.assertClosed("onSubscribe should be called prior to onError always");
                        onErrorLatch.assertOpen(String.format("Error-state Publisher %s called `onError` twice on new Subscriber", pub));
                        onErrorLatch.close();
                    }
                });
                onSubscribeLatch.expectClose("Should have received onSubscribe");
                onErrorLatch.expectClose(String.format("Error-state Publisher %s did not call `onError` on new Subscriber", pub));

                env.verifyNoAsyncErrors();
            });
        } catch (SkipException e) {
            throw e;
        } catch (Throwable t) {
            throw new RuntimeException(String.format("Publisher threw exception (%s) instead of signalling error via onError!", t.getMessage()), t);
        }
    }
Rule 1.4 and 1.9 ensure a Publisher's ability to signal error to the Subscriber, however the
implementation expects such error to occur immediately after subscribing, i.e. {@code onError()} is
called after {@code onSubscribe()}.
The {@link SurroundingPublisher} however subscribes publisher and signals error after the first request,
therefore for the error to be signaled, we must make requests first.

{@link PublisherVerificationRules#optional_spec104_mustSignalOnErrorWhenFails()} and
{@link PublisherVerificationRules#required_spec109_mayRejectCallsToSubscribeIfPublisherIsUnableOrUnwillingToServeThemRejectionMustTriggerOnErrorAfterOnSubscribe()}
are overridden below to call {@link Subscription#request(long)} after subscribing.
core/src/test/java/com/linecorp/armeria/internal/common/stream/SurroundingPublisherTckTest.java