All streams share one TCP connection, so a lost packet blocks every stream until it is retransmitted
All streams share one TCP connection, so one lost packet blocks every stream. TCP delivers bytes strictly in order. So it holds back data for all streams until the lost packet is sent again. HTTP/2 fixed head-of-line blocking at the HTTP layer with multiplexing, but not at the TCP layer. HTTP/3 moves to QUIC, where streams are independent at the transport layer.
"HTTP/2 sends requests one at a time on each connection" is wrong. That describes HTTP/1.1. HTTP/2 runs many requests in parallel on one connection.
Read more
- HTTP/2 (MDN) (https://developer.mozilla.org/en-US/docs/Glossary/HTTP_2)developer.mozilla.org
- RFC 9114: HTTP/3 (https://www.rfc-editor.org/rfc/rfc9114)rfc-editor.org