# What a 1ms requestTimeout actually throws on a real MCP handshake -- captured, not guessed requestTimeout=1ms, initializationTimeout=30s -- set deliberately far apart to see which one actually governs the initialize() handshake client.initialize() threw: [0] java.lang.RuntimeException: Client failed to initialize by explicit API call [0] suppressed: java.lang.Exception: #block terminated with an error [1] java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 1ms in 'source(MonoDeferContextual)' (and no fallback has been configured) confirmed: the real timeout-carrying exception is java.util.concurrent.TimeoutException, a plain JDK type from Reactor's Flux.timeout() operator -- not a dedicated MCP timeout exception class.