Before You File a Bug Report Please Confirm You Have Done The Following...
Playground Link
https://typescript-eslint.io/play/#ts=5.4.3&showAST=es&fileType=.tsx&code=GYewTgBAhg7lCWAXCAKAxiAdgZ2diIwEA2gOSYikA0EpiAFgKaZQBGANo9tbU2I6QC6ASggBvAL4AoRgA8ADuGRiIEoA&eslintrc=N4KABGBEBOCuA2BTAzpAXGUEKQAIBcBPABxQGNoBLY-AWhXkoDt8B6AQwHd3K78ALRE3YAjJOiiJo0APbRI4MAF8QSoA&tsconfig=N4KABGBEDGD2C2AHAlgGwKYCcDyiAuysAdgM6QBcYoEEkJemy0eAcgK6qoDCAFutAGsylBm3TgwAXxCSgA&tokens=false
Repro Code
for await (const s of ['no', 'thenables', 'here']) {}
export { }
ESLint Config
module.exports = {
"rules": {
"@typescript-eslint/await-thenable": "error"
}
}
tsconfig
Expected Result
I expect that the first line should flag due to for await being used on something that does not have a Symbol.asyncIterator.
Actual Result
No error.
Additional Info
Note that it's unambiguous IMO that the example given should flag. However, I, personally, would also like for the rule to flag on misused for-await-of, where the iterable is a synchronous iterator over promises. That should be written as an ordinary for loop. It's only a true async iterable that should be allowed to be iterated over in a for-await-of loop.
Refresher on for-await-of: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of
Before You File a Bug Report Please Confirm You Have Done The Following...
Playground Link
https://typescript-eslint.io/play/#ts=5.4.3&showAST=es&fileType=.tsx&code=GYewTgBAhg7lCWAXCAKAxiAdgZ2diIwEA2gOSYikA0EpiAFgKaZQBGANo9tbU2I6QC6ASggBvAL4AoRgA8ADuGRiIEoA&eslintrc=N4KABGBEBOCuA2BTAzpAXGUEKQAIBcBPABxQGNoBLY-AWhXkoDt8B6AQwHd3K78ALRE3YAjJOiiJo0APbRI4MAF8QSoA&tsconfig=N4KABGBEDGD2C2AHAlgGwKYCcDyiAuysAdgM6QBcYoEEkJemy0eAcgK6qoDCAFutAGsylBm3TgwAXxCSgA&tokens=false
Repro Code
ESLint Config
tsconfig
{ "compilerOptions": { "strictNullChecks": true } }Expected Result
I expect that the first line should flag due to
for awaitbeing used on something that does not have aSymbol.asyncIterator.Actual Result
No error.
Additional Info
Note that it's unambiguous IMO that the example given should flag. However, I, personally, would also like for the rule to flag on misused for-await-of, where the iterable is a synchronous iterator over promises. That should be written as an ordinary for loop. It's only a true async iterable that should be allowed to be iterated over in a for-await-of loop.
Refresher on for-await-of: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of