I've been reading the IndexedDB spec. A gotcha is that you should almost never use request.onsuccess on any write request (e.g. transaction.add(...), transaction.delete(...), transaction.put(...)). Instead, you should listen to transaction.oncomplete, which is after the data has actually been written. Another gotcha: transaction.onerror is called once for each queued request after the first request fails, so make sure your callback can handle being called multiple times.
one plus one
Shared publicly•View activity