void handleGoAway(int lastStreamId, GoAwayException exception) {
    NettyUtils.doInEventLoop(parentChannel.eventLoop(), () -> {
      this.lastStreamId = lastStreamId;

      if (state == RecordState.CLOSED) {
        return;
      }

      if (state == RecordState.OPEN) {
        state = RecordState.CLOSED_TO_NEW;
      }

      // Create a copy of the children to close, because fireExceptionCaught may remove from the childChannels.
      List<Http2StreamChannel> childrenToClose = new ArrayList<>(streamChannels.values());
      childrenToClose.stream()
          .filter(cc -> cc.stream().id() > lastStreamId)
          .forEach(cc -> cc.pipeline().fireExceptionCaught(exception));
    });
  }
Handle a {@link Http2GoAwayFrame} on this connection, preventing new streams from being created on it, and closing any
streams newer than the last-stream-id on the go-away frame. The GOAWAY frame (type=0x7) is used to initiate shutdown
of a connection or to signal serious error conditions. GOAWAY allows an endpoint to gracefully stop accepting new
streams while still finishing processing of previously established streams.
This enables administrative actions, like server maintenance.
ambry-network/src/main/java/com/github/ambry/network/http2/MultiplexedChannelRecord.java