Per-attempt timeout for the WebTransport handshake + session:info stream.
Browsers don't always surface a timely error when the relay's UDP port
is unreachable or a cert hash mismatch leaves QUIC stuck — we wrap
transport.ready in a timeout so the connect loop fails with a clear
error instead of hanging on connecting forever.
Per-attempt timeout for the WebTransport handshake + session:info stream. Browsers don't always surface a timely error when the relay's UDP port is unreachable or a cert hash mismatch leaves QUIC stuck — we wrap
transport.readyin a timeout so the connect loop fails with a clear error instead of hanging onconnectingforever.