@Override
        protected void doOnCompletion(@Nullable Throwable cause) {
            if (!headersFuture.isDone()) {
                if (cause != null && !(cause instanceof CancelledSubscriptionException) &&
                    !(cause instanceof AbortedStreamException)) {
                    headersFuture.doCompleteExceptionally(cause);
                } else {
                    headersFuture.doComplete(HEADERS_WITH_UNKNOWN_STATUS);
                }
            }
        }
Creates a new {@link DefaultSplitHttpResponse} from the specified {@link HttpResponse}.
The specified {@link Predicate} is used to determine if the {@link ResponseHeaders} is the final one.
For example, if there are multiple informational {@link ResponseHeaders} and the {@link Predicate}
will be {@code headers -> !headers.status().isInformational()}.
However, if the {@link ResponseHeaders} is only one, and it can be an informational one such as a
WebSocket response, {@link Predicate} will be {@code headers -> true}.
core/src/main/java/com/linecorp/armeria/internal/common/DefaultSplitHttpResponse.java