| 14577 | } |
| 14578 | |
| 14579 | const awaitPendingTransaction = (state: Transaction["Service"]) => |
| 14580 | suspend(() => { |
| 14581 | const key = {} |
| 14582 | const refs = Array.from(state.journal.keys()) |
| 14583 | const clearPending = () => { |
| 14584 | for (const clear of refs) { |
| 14585 | clear.pending.delete(key) |
| 14586 | } |
| 14587 | } |
| 14588 | return callback<void>((resume) => { |
| 14589 | const onCall = () => { |
| 14590 | clearPending() |
| 14591 | resume(void_) |
| 14592 | } |
| 14593 | for (const ref of refs) { |
| 14594 | ref.pending.set(key, onCall) |
| 14595 | } |
| 14596 | return sync(clearPending) |
| 14597 | }) |
| 14598 | }) |
| 14599 | |
| 14600 | function commitTransaction(fiber: Fiber<unknown, unknown>, state: Transaction["Service"]) { |
| 14601 | for (const [ref, { value }] of state.journal) { |