chunks
The records of query as a resumable stream: keyset pages of CursorQuery.size records, each its own QueryBackend.page call within the admitted timeout, one after the other from after the query's cursor token, until a page comes back short or limit records were emitted (null: no limit). Each record carries the token of its position.
A backend under a bulkhead takes a permit for each page and gives it back before the page's records are emitted, so a stream holds no permit while its consumer reads, and a lowered limit applies to it from its next page. Pages are read one after the other, not in one snapshot: a record written between two pages is seen when it sorts after the last position read, and a record that moves across that position may be seen twice or not at all, as with cursor queries.