Have you checked that this event is generated before the 'ready' event is?  I assume that is the way IndexedDB upgrades work, but am not certain.

I notice that you didn't need to use upgradend in any of the media apps.  I suppse the 'ready' or 'unavailable' event will mark the end of an upgrade, so if you'd like you could remove upgradeend here and change the upgradestart event to be named 'upgrading'.

I'm not sure which would be better. Either way is okay with me.  I suppose it is simpler to have only a single event if that is all we need.