Handshake-RTT race
Each run opens a cold connection to a fresh subdomain over HTTP/3
(race-*.quic-demo, QUIC) and HTTP/2 (race-*.h2-only, TCP)
at the same instant, and times the setup with the browser's Resource Timing API.
HTTP/3 merges transport and crypto into ~1 round trip; HTTP/2 needs TCP then TLS (2–3).
Each leg self-checks the protocol it actually used, and warm/reused connections are discarded.
Your network couldn't negotiate HTTP/3 — the race needs h3 from your side, so it can't run here.
Subdomain pool exhausted — reload the page to run more cold races (further runs would reuse warm connections).
h3: ■ handshake h2: ■ TCP ■ TLS