@Override
    public void onRstStreamRead(ChannelHandlerContext ctx, int streamId, long errorCode) throws Http2Exception {
        keepAliveChannelRead();
        final HttpResponseWrapper res = getResponse(streamIdToId(streamId));
        if (res == null || !res.isOpen()) {
            if (conn.streamMayHaveExisted(streamId)) {
                if (logger.isDebugEnabled()) {
                    logger.debug("{} Received a late RST_STREAM frame for a closed stream: {}",
                                 ctx.channel(), streamId);
                }
            } else {
                throw connectionError(PROTOCOL_ERROR,
                                      "received a RST_STREAM frame for an unknown stream: %d", streamId);
            }
            return;
        }

        final Http2Error http2Error = Http2Error.valueOf(errorCode);
        final ClosedStreamException cause =
                new ClosedStreamException("received a RST_STREAM frame: " + http2Error);

        if (http2Error == Http2Error.REFUSED_STREAM) {
            res.close(UnprocessedRequestException.of(cause));
        } else {
            res.close(cause);
        }
    }
Returns {@code true} if a connection has reached its lifespan
and the connection did not receive or send a GOAWAY frame.
core/src/main/java/com/linecorp/armeria/client/Http2ResponseDecoder.java