I’ve been using the chrome-promise library to wrap the Chrome extension API with a facade that returns promises instead of using callbacks. This has generally worked quite well, but I seem to be running into an issue with
My extension’s event page listens for the
chrome.tabs.onRemoved events. When it gets the
onActivated event, it adds the tab info to an array and calls
chrome.storage.local.set(data) to store the updated array in local storage.
When it gets the
onRemoved event, it calls
chromepromise.storage.local.get(null).then(...) to get the list of tabs via a promise, removes the tab info from the array, and then calls
chrome.storage.local.set() again to save the updated array.
The issue is that the
onActivated event seems to trigger before the promise flow from the
onRemoved event resolves. So the
onActivated handler retrieves the old stored array, with the closed tab still in it, and then pushes the newly activated tab. So the stored tab data now includes a tab that’s already been closed.
I’m assuming this is an issue with using promises instead of callbacks, but I’m wondering if anyone else has run into this problem with this library and worked around it.