code: @Nullable
      PooledChannel acquireNow(SessionProtocol desiredProtocol, PoolKey key) {
          PooledChannel ch;
          switch (desiredProtocol) {
              case HTTP:
                  ch = acquireNowExact(key, SessionProtocol.H2C);
                  if (ch == null) {
                      ch = acquireNowExact(key, SessionProtocol.H1C);
                  }
                  break;
              case HTTPS:
                  ch = acquireNowExact(key, SessionProtocol.H2);
                  if (ch == null) {
                      ch = acquireNowExact(key, SessionProtocol.H1);
                  }
                  break;
              default:
                  ch = acquireNowExact(key, desiredProtocol);
          }
          return ch;
      }
docs: Attempts to acquire a {@link Channel} which is matched by the specified condition immediately.
  
  @return {@code null} is there's no match left in the pool and thus a new connection has to be
  requested via {@link #acquireLater(SessionProtocol, PoolKey, ClientConnectionTimingsBuilder)}.