@Nullable
    @SuppressWarnings("checkstyle:FallThrough")
    PooledChannel acquireNow(SessionProtocol desiredProtocol, SerializationFormat serializationFormat,
                             PoolKey key) {
        PooledChannel ch;
        switch (desiredProtocol) {
            case HTTP:
                ch = acquireNowExact(key, SessionProtocol.H2C, serializationFormat);
                if (ch == null) {
                    ch = acquireNowExact(key, SessionProtocol.H1C, serializationFormat);
                }
                break;
            case HTTPS:
                ch = acquireNowExact(key, SessionProtocol.H2, serializationFormat);
                if (ch == null) {
                    ch = acquireNowExact(key, SessionProtocol.H1, serializationFormat);
                }
                break;
            default:
                ch = acquireNowExact(key, desiredProtocol, serializationFormat);
        }
        return ch;
    }
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, SerializationFormat,
        PoolKey, ClientConnectionTimingsBuilder)}.
core/src/main/java/com/linecorp/armeria/client/HttpChannelPool.java