- commit
- d65d16ad3f768f42b3140591db8667e4046dac1a
- parent
- c7a97c1aee1e445da2e6e5ff0f99b1501d2d13f0
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2022-11-27 10:34
fix recording concurrency issue
Diffstat
| M | src/bg.js | 11 | ++++++++--- |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/bg.js b/src/bg.js
@@ -1,5 +1,7 @@ 1 1 /* global browser shared */ 2 2 -1 3 var lock = Promise.resolve(); -1 4 3 5 var STORAGE_DEFAULTS = { 4 6 'rules': {}, 5 7 'requests': {}, @@ -17,9 +19,7 @@ var storageGet = function(key) { 17 19 }); 18 20 }; 19 2120 -1 var storageChange = function(key, fn) {21 -1 // even though storage access is async, this is safe as long as the code22 -1 // in between is sync.-1 22 var _storageChange = function(key, fn) { 23 23 return storageGet(key).then(oldValue => { 24 24 var data = {}; 25 25 data[key] = fn(oldValue); @@ -27,6 +27,11 @@ var storageChange = function(key, fn) { 27 27 }); 28 28 }; 29 29 -1 30 var storageChange = function(key, fn) { -1 31 lock = lock.then(() => _storageChange(key, fn)); -1 32 return lock; -1 33 }; -1 34 30 35 var setRule = function(context, hostname, type, rule) { 31 36 return storageChange('rules', rules => { 32 37 if (hostname === 'first-party') {