On Mon, 5 Oct 2015 at 23:31 Joshua Bell <jsb...@google.com> wrote: > Yeah - "When control is returned to the event loop" isn't precise enough. > It's an open issue in the 2nd Ed. and I welcome suggestions for tightening > it up. Note that Jake Archibald, at least, was happy with the Blink > behavior, after chewing on it for a bit. But it still seems far too subtle > to me, and someone who writes blog posts explaining tasks vs. microtasks is > probably not the average consumer of the API. :) >
Step 8 of https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction can queue a microtask to unset the active flag. It would mean: var tx = db.transaction(…); Promise.resolve().then(_ => { // transaction is now closed }); …but if you want to keep the transaction open longer, that's what waitUntil is for. As for https://w3c.github.io/IndexedDB/#fire-a-success-event - this seems fine as long as microtasks fire before step 4, which they should.