JS.TS.AWAIT.THENABLE

Disallows awaiting a value that is not a Thenable

This rule disallows awaiting a value that is not a "Thenable" (an object which has then method, such as a Promise). While it is valid JavaScript to await a non-Promise-like value (it will resolve immediately), this pattern is often a programmer error, such as forgetting to add parenthesis to call a function that returns a Promise.

Rule Details

Examples of code for this rule:

<!--tabs-->

Incorrect

Copy
await 'value';

const createValue = () => 'value';
await createValue();

Correct

Copy
await Promise.resolve('value');

const createValue = async () => 'value';
await createValue();

Options

Copy
// .eslintrc.json
{
  "rules": {
    "@typescript-eslint/await-thenable": "error"
  }
}

This rule is not configurable.

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.

The content on this page is adapted from the ESLint User Guide. Copyright © OpenJS Foundation and other contributors, www.openjsf.org. All rights reserved. https://eslint.org/docs/rules/