_promise: function()

in public/dexie.js [3335:3371]


      _promise: function (mode, fn, bWriteLock) {
        var _this = this;
        if (mode === READWRITE && this.mode !== READWRITE)
          return rejection(new exceptions.ReadOnly("Transaction is readonly"));
        if (!this.active)
          return rejection(new exceptions.TransactionInactive());
        if (this._locked()) {
          return new Promise(function (resolve, reject) {
            _this._blockedFuncs.push([
              function () {
                _this._promise(mode, fn, bWriteLock).then(resolve, reject);
              },
              PSD,
            ]);
          });
        } else if (bWriteLock) {
          return newScope(function () {
            var p = new Promise(function (resolve, reject) {
              _this._lock();
              var rv = fn(resolve, reject, _this);
              if (rv && rv.then) rv.then(resolve, reject);
            });
            p.finally(function () {
              return _this._unlock();
            });
            p._lib = true;
            return p;
          });
        } else {
          var p = new Promise(function (resolve, reject) {
            var rv = fn(resolve, reject, _this);
            if (rv && rv.then) rv.then(resolve, reject);
          });
          p._lib = true;
          return p;
        }
      },