diff --git a/lib/rules/require-atomic-updates.js b/lib/rules/require-atomic-updates.js index 4f6acceab80..c552f1bd825 100644 --- a/lib/rules/require-atomic-updates.js +++ b/lib/rules/require-atomic-updates.js @@ -113,6 +113,9 @@ class SegmentInfo { if (info) { info.freshReadVariableNames.add(variableName); + + // If a variable is freshly read again, then it's no more out-dated. + info.outdatedReadVariableNames.delete(variableName); } } } diff --git a/tests/lib/rules/require-atomic-updates.js b/tests/lib/rules/require-atomic-updates.js index 8977745cacc..cd51e38ffbd 100644 --- a/tests/lib/rules/require-atomic-updates.js +++ b/tests/lib/rules/require-atomic-updates.js @@ -150,6 +150,18 @@ ruleTester.run("require-atomic-updates", rule, { let bar = await get(foo.id); foo.prop = bar.prop; } + `, + + // https://github.com/eslint/eslint/issues/11954 + ` + let count = 0 + let queue = [] + async function A(...args) { + count += 1 + await new Promise(resolve=>resolve()) + count -= 1 + return + } ` ],