private void scheduleSessionTimeout(Channel channel, Promise<Channel> sessionPromise,
                                        int connectionTimeoutMillis, SessionProtocol desiredProtocol) {
        assert sessionTimeoutFuture == null : "sessionTimeoutFuture is scheduled already.";
        sessionTimeoutFuture = channel.eventLoop().schedule(() -> {
            if (sessionPromise.tryFailure(new SessionProtocolNegotiationException(
                    desiredProtocol,
                    "connection established, but session creation timed out. (channel: " + channel + ')'))) {
                channel.close();
            }
        }, connectionTimeoutMillis, TimeUnit.MILLISECONDS);
    }
{@code true} if an {@link Http2Settings} has been received from the remote endpoint.
core/src/main/java/com/linecorp/armeria/client/HttpSessionHandler.java