The synchronous demand queue (extraction + budget).
Source-byte residency (the model / buffer provider).
Max products prefetched + extracted per pump cycle.
Products awaiting admission (not yet prefetched).
Run one admission cycle (see class docs). Coalesces with an in-flight cycle.
The cycle's outcome.
Request a product at a demand priority. Resident products forward immediately (ranking refresh); others queue for the next pump cycle at the highest priority requested so far.
The product to materialise.
The demand priority (higher = more wanted).
Admission + prefetch orchestration in front of a DemandGeometryQueue.
Consumers
request()products as demand changes (the pump owns admission — don't request on the queue directly); each asyncpump()cycle:Re-entrant calls coalesce: a
pump()while one is in flight returns the in-flight cycle's promise rather than interleaving prefetch batches. Products already resident in the queue skip prefetch entirely (their ranking refresh is forwarded immediately).