void acquireClaimedStream(Promise<Channel> promise) {
    NettyUtils.doInEventLoop(parentChannel.eventLoop(), () -> {
      if (state != RecordState.OPEN) {
        String message;
        // GOAWAY
        if (state == RecordState.CLOSED_TO_NEW) {
          message = String.format("Connection %s received GOAWAY with Last Stream ID %d. Unable to open new "
              + "streams on this connection.", parentChannel, lastStreamId);
        } else {
          message = String.format("Connection %s was closed while acquiring new stream.", parentChannel);
        }
        log.warn(message);
        promise.setFailure(new IOException(message));
        return;
      }

      Future<Http2StreamChannel> streamFuture =
          new Http2StreamChannelBootstrap(parentChannel).handler(streamChannelInitializer).open();
      streamFuture.addListener((GenericFutureListener<Future<Http2StreamChannel>>) future -> {
        NettyUtils.warnIfNotInEventLoop(parentChannel.eventLoop());

        if (!future.isSuccess()) {
          promise.setFailure(future.cause());
          return;
        }

        Http2StreamChannel channel = future.getNow();
        streamChannels.put(channel.id(), channel);
        promise.setSuccess(channel);

        if (closeIfIdleTask == null && allowedIdleTimeInMs != null && allowedIdleTimeInMs > 0) {
          enableCloseIfIdleTask();
        }
      });
    }, promise);
  }
Contains a {@link Future} for the actual socket channel and tracks available stream channels.
ambry-network/src/main/java/com/github/ambry/network/http2/MultiplexedChannelRecord.java