A TCP receiver can have thousands of later bytes safely stored in memory and still be unable to give them to the application. One earlier range is missing, so the ordered byte stream has a gap.
This is head-of-line blocking, often abbreviated as HOL blocking: an item at the front of an ordered sequence prevents ready items behind it from making progress.
For TCP, the item at the “head” is the next missing byte range. Bytes after that range may have arrived, but a normal TCP socket cannot expose them to the application until the gap is filled. A single lost or delayed segment can therefore pause delivery of much more data than the segment itself contained.
The effect becomes especially visible when one TCP connection carries several independent application operations. Although the application may think in terms of requests, responses, or logical streams, TCP sees only one ordered sequence of bytes. A gap anywhere in that sequence temporarily blocks every later byte on the connection.