-  ns.delete_key= function(key, success) {
-    let request = ns.open_store("readwrite").delete(key);
-    request.onsuccess = (event) => { if (success) success(event.target.result); };
-    request.onerror = ns.error;
+  ns.delete_key = function(key, success) {
+    ns.open_rw_store((store) => {
+      let request = store.delete(key);
+      request.onsuccess = (event) => { if (success) success(event.target.result); };
+      request.onerror = ns.error;
+    });
+  };
+
+  ns.open_rw_store = function(callback) {
+    if (db && db_version == db.version) {
+      callback(ns.open_store("readwrite"));
+    } else {
+      request.aftersuccess.push(() => callback(ns.open_store("readwrite")));
+    }
+  };
+
+  ns.open_ro_store = function(callback) {
+    if (db && db_version == db.version) {
+      callback(ns.open_store("readonly"));
+    } else {
+      request.aftersuccess.push(() => callback(ns.open_store("readonly")));
+    }