await-thenable
Disallow awaiting a value that is not a Thenable.
Extending "plugin:@typescript-eslint/recommended-requiring-type-checking"
in an ESLint configuration enables this rule.
This rule requires type information to run.
A "Thenable" value is an object with has a then
method, such as a Promise.
The await
keyword is generally used to retrieve the result of calling a Thenable's then
method.
If the await
keyword is used on a value that is not a Thenable, the value is directly resolved immediately.
While doing so is valid JavaScript, it is often a programmer error, such as forgetting to add parenthesis to call a function that returns a Promise.
module.exports = {
"rules": {
"@typescript-eslint/await-thenable": "error"
}
};
Examples
- ❌ Incorrect
- ✅ Correct
await 'value';
const createValue = () => 'value';
await createValue();
await Promise.resolve('value');
const createValue = async () => 'value';
await createValue();
This rule is not configurable.
Options
When Not To Use It
If you want to allow code to await
non-Promise values.
This is generally not preferred, but can sometimes be useful for visual consistency.