Quoting @nilclass’s mailing list reply in full:
The primary problem with the indexedDB backend is that indexedDB
transactions are committed implicitly, unless a new operation is
started directly from the success callback of the previous operation
in that transaction. Due to the way remoteStorage’s storage-backend
interface is designed, that doesn’t happen though - but instead
sometimes the next operation happens asynchronously.I currently see two alternatives to move forward:
- Implement custom transactions on top of the indexedDB API - that sounds like the simplest to me, but is horribly slow (There is a start
of this implementation here:
https://github.com/remotestorage/remotestorage.js/tree/feature/indexed-db-backend)- Rewrite the “store” to implement all operations that need to be atomic in a way that they don’t have asynchronous calls in between.
After experimenting with (1) for a while, I currently tend to do (2).
Also I’m very much open to new ideas.