private void abort0(Throwable cause, SubscriptionImpl subscription) {
        final Object o = queue.peek();
        // If there's no data pushed (i.e empty stream), notify subscriber with the event pushed by
        // close() or close(cause).
        if (!wroteAny && o instanceof CloseEvent) {
            notifySubscriberOfCloseEvent(subscription, (CloseEvent) queue.remove());
            return;
        }

        notifySubscriberOfCloseEvent(subscription, newCloseEvent(cause));
    }
Invoked whenever a new demand is requested.
@param n Newly requested demand
core/src/main/java/com/linecorp/armeria/common/stream/DefaultStreamMessage.java