Promise based wrapper for IndexedDB