fix: out of order cleanup with top-level await#898
Merged
pmmmwh merged 2 commits intopmmmwh:mainfrom Mar 31, 2025
Merged
Conversation
Review or Edit in CodeSandboxOpen the branch in Web Editor • VS Code • Insiders |
Owner
|
Hi! Thanks for the PR. Unfortunately I have been a bit busy lately so I did not get to this - but I will try to handle it this week. (Closed / reopened the PR to get CI running) |
4e20d82 to
5626751
Compare
5626751 to
e817e07
Compare
pmmmwh
approved these changes
Mar 31, 2025
Owner
|
Thank you for fixing this! |
This was referenced Mar 31, 2025
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#729 happens because webpack's Top Level Await implementation allows for modules to be loaded in parallel. This breaks the assumption that a global
__webpack_require__.$Refresh$, which contains information about the currently loading module, can be managed as a stack like data structure.This change borrows the concept from webpack's own
webpack/runtime/hot module replacementchunk that each module can receive its own copy of a "proxy"__webpack_require__. This proxy delegates all of its behavior to the global__webpack_require__except for access to the$Refresh$property. In practice this guarantees that__webpack_require__.$Refresh$is isolated to the currently loading module, avoiding any chance of a race condition caused by parallel loading.This has been found to solve the motivating issue in a 3000+ file (proprietary) Typescript/webpack build chain monorepo.
Fixes #729