From 2e8899ceb2a3f7b7470ce4278827bc532fcb31c1 Mon Sep 17 00:00:00 2001 From: Yulia Date: Thu, 23 Mar 2023 09:54:49 +0000 Subject: [PATCH] Bug 1822452 - Reject any remaining requests; r=jonco This patch allows us to reject any outstanding requests when terminating a worker. As this is controlled by the module loader, the approach I took here was to reject the promises and allow the moduleloader to shutdown. I am open to alternatives however. Differential Revision: https://phabricator.services.mozilla.com/D173290 --- js/loader/ModuleLoaderBase.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/js/loader/ModuleLoaderBase.cpp b/js/loader/ModuleLoaderBase.cpp index 712f13bf2e07..ff9e4319de55 100644 --- a/js/loader/ModuleLoaderBase.cpp +++ b/js/loader/ModuleLoaderBase.cpp @@ -997,7 +997,12 @@ ModuleLoaderBase::~ModuleLoaderBase() { void ModuleLoaderBase::Shutdown() { CancelAndClearDynamicImports(); - MOZ_ASSERT(mFetchingModules.IsEmpty()); + + for (const auto& entry : mFetchingModules) { + if (entry.GetData()) { + entry.GetData()->Reject(NS_ERROR_FAILURE, __func__); + } + } for (const auto& entry : mFetchedModules) { if (entry.GetData()) { @@ -1005,6 +1010,7 @@ void ModuleLoaderBase::Shutdown() { } } + mFetchingModules.Clear(); mFetchedModules.Clear(); mGlobalObject = nullptr; mEventTarget = nullptr;