I work with HTTP/2 daily, and there are some pain points when running at high speeds:
- Headers are still head of line blocking. You must synchronize sending them to maintain the HPACK table state. At a high number of requests per second, this is a bottle neck
- Running over TLS is CPU bottleneck since encrypted messages are sequential. We get around this by making multiple TCP connections.
- Long lived HTTP/2 connections will often break because of NAT's (home internet), or changing IP address (mobile). A single dropped packet kills throughput for highspeed links too.
All of these are addressed by the QUIC protocol. I suspect that eventually HTTP/2 will be last major protocol over TCP because of most of the aforementioned problems come from running over it.