export function createDeferredResultDelivery() { const pending = new Map(); return { defer(result: T) { pending.set(result.id, result); }, consume(ids: Iterable) { for (const id of ids) pending.delete(id); }, drain() { const results = [...pending.values()]; pending.clear(); return results; }, clear() { pending.clear(); }, }; }