For those who are interested in relation between QUICStream and HQClientTransaction,
I draw a rough picture to help your understanding. >From protocol perspective, HTTP is on top of TCP or QUIC. From ATS design perspective, Transactions are on top of a Session. A difference between TCP and QUIC is transport layer multiplexing, QUIC streams. QUIC applications (e.g. HTTP, DNS, FTP) need to use QUIC streams to transfer data (use of multiplexed transport is not optional, applications may transfer all data on a stream though). Since current HTTP/QUIC spec uses 1 stream for 1 request, we simply mapped Transactions to Streams 1:1. However, it was 2 streams for 1 request previously. Number of streams for 1 request / query is up to QUIC applications. Also, QUIC applications may use specific streams for specific purpose. HTTP/QUIC uses stream 1 for control frames, like stream 0 of HTTP/2, and HTTP/QUIC uses even number stream IDs for server initiated streams. So, QUIC applications need to be aware of QUIC streams. As for Session, it's the same as HTTP/1.1 over TCP. QUICConnection and ClientSession is 1:1. You can see a QUIC connection as a persistent TCP connection. Thanks, Masakazu [image: Inline image 1]