public void handleGoAway(Channel parentChannel, int lastStreamId, GoAwayException exception) {
    log.debug("Received GOAWAY on {} with lastStreamId of {}", parentChannel, lastStreamId);
    try {
      MultiplexedChannelRecord multiplexedChannel = parentChannel.attr(MULTIPLEXED_CHANNEL).get();

      if (multiplexedChannel != null) {
        multiplexedChannel.handleGoAway(lastStreamId, exception);
      } else {
        // If we don't have a multiplexed channel, the parent channel hasn't been fully initialized. Close it now.
        closeAndReleaseParent(parentChannel);
      }
    } catch (Exception e) {
      log.error("Failed to handle GOAWAY frame on channel {}", parentChannel, e);
    }
  }
Acquire a stream on a connection that has already been initialized. This will return false if the connection cannot have
any more streams allocated, and true if the stream can be allocated.

This will NEVER complete the provided future when the return value is false. This will ALWAYS complete the provided
future when the return value is true.
ambry-network/src/main/java/com/github/ambry/network/http2/Http2MultiplexedChannelPool.java