/** * @fileoverview disallow using an async function as a Promise executor * @author Teddy Katz */ "use strict"; //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ /** @type {import('../types').Rule.RuleModule} */ module.exports = { meta: { type: "problem", docs: { description: "Disallow using an async function as a Promise executor", recommended: true, url: "https://eslint.org/docs/latest/rules/no-async-promise-executor", }, fixable: null, schema: [], messages: { async: "Promise executor functions should not be async.", }, }, create(context) { return { "NewExpression[callee.name='Promise'][arguments.0.async=true]"( node, ) { context.report({ node: context.sourceCode.getFirstToken( node.arguments[0], token => token.value === "async", ), messageId: "async", }); }, }; }, };