Basil.js – Smart persistence layer
github.com
github.com
Providing an API with callbacks or better yet promises forces you to write future-safe code.
I think the main issue is actually with language design. Callbacks and promises are not decent ways to handle asynchronity in my opinion. Perhaps it could be abstracted away in the language itself in a way that the function interface would be identical for both "sync" and async functions..
Even if you're using synchronous storage, wrap it in an asynchronous API and save yourself a world of hurt later.