docs: @Nullable
    ClientTransport obtainActiveTransport() {
      ClientTransport savedTransport = activeTransport;
      if (savedTransport != null) {
        return savedTransport;
      }
      try {
        synchronized (lock) {
          savedTransport = activeTransport;
          // Check again, since it could have changed before acquiring the lock
          if (savedTransport != null) {
            return savedTransport;
          }
          if (state.getState() == IDLE) {
            channelLogger.log(ChannelLogLevel.INFO, "CONNECTING as requested");
            gotoNonErrorState(CONNECTING);
            startNewTransport();
          }
        }
      } finally {
        syncContext.drain();
      }
      return null;
    }