and not so much a review, but what happens with indexeddb and async schema migrations? I am assuming here the cursor waits for the .put to loop, but runmigration2 is gonna complete immediately and if were were to have runmigration3 are we just using the assumption that runmigration2 will have a running transaction blocking it? 

Also what happens with async non idb requests, like xhr / blob stuff, are they just straight up not gonna work?

These same issues would have come up with the while loop implementation, but wanna think about it while we are changing the code