IndexedDB has an abortion of an API.
The designers were a bunch of shitters who targeted it at library writers, rather than developers, with the theory that they'd abstract it for us mere monkeys.
Obviously THAT didn't happen, so now we're stuck with it until it gets totally replaced.
Post-promise APIs like cache are really nice, so it's definitely possible if you start from scratch.