An IndexedDB wrapper that uses promises