IndexedDB `upgradeneeded` 事件中的 `AbortError`

`AbortError` within IndexedDB `upgradeneeded` event

在下面的代码中,Firefox 添加了一个 AbortError 到控制台,而 Chrome 没有。

var bugDB = 'test1';
var delReq = indexedDB.deleteDatabase(bugDB);
delReq.onsuccess = function () {
    var req = indexedDB.open(bugDB);
    req.onupgradeneeded = function (e) {
        console.log('upgrade');
        req.result.close();
        console.log('finish closing');
    };
};

尽管此错误不会阻止 "finish closing" 的执行,但它确实会导致 Mocha/Chai Firefox 测试出现问题(尽管如果 req.results.close()req.onsuccess 处理程序。这是 Firefox 中的一个错误吗?如果 AbortError 正在某处传播(设计?),如何成功捕获它(e.target.result.onabort 不起作用)?

此行为符合规范:

https://w3c.github.io/IndexedDB/#opening

"steps for opening a database" 8.2:如果连接在升级之后但在成功之前关闭 - 这会在调用 close() 时发生,因为在升级事务完成之前关闭实际上不会发生 - 然后打开如您所见,请求失败 AbortError

Chrome 和 Firefox 中的行为相同; Chrome 默认情况下不记录错误。如果您添加:

req.onerror = function(e) {
  console.log(req.error.name, req.error.message); 
};

...您也会在 Chrome 中看到它。