      };
            });
        }
        function txnAsPromise(txn) {
            return new Promise(function (resolve, reject) {
                txn.oncomplete = function() {
                    resolve(txn);
                };
                txn.onabort = function(e) {
                    reject(new Error("Transaction got aborted: " + txn.error));
                };
            });
        }

        const BrowserMutationObserver = window.MutationObserver || window.WebKitMutationObserver;

        func