@Override
    public final ChannelFuture goAway(ChannelHandlerContext ctx, int lastStreamId, long errorCode,
                                      ByteBuf debugData, ChannelPromise promise) {
        if (!ctx.channel().isActive()) {
            // There's no point of sending a GOAWAY frame because the connection is over already.
            promise.unvoid().trySuccess();
            debugData.release();
            return promise;
        }

        return super.goAway(ctx, lastStreamId, errorCode, debugData, promise);
    }
Sends a {@code GO_AWAY} frame to initiate connection shutdown. No-op if channel isn't active.
Does <strong>not</strong> flush immediately, this is the responsibility of the caller.
core/src/main/java/com/linecorp/armeria/internal/common/AbstractHttp2ConnectionHandler.java