• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * @fileoverview disallow using an async function as a Promise executor
3 * @author Teddy Katz
4 */
5"use strict";
6
7//------------------------------------------------------------------------------
8// Rule Definition
9//------------------------------------------------------------------------------
10
11module.exports = {
12    meta: {
13        type: "problem",
14
15        docs: {
16            description: "disallow using an async function as a Promise executor",
17            category: "Possible Errors",
18            recommended: true,
19            url: "https://eslint.org/docs/rules/no-async-promise-executor"
20        },
21
22        fixable: null,
23        schema: [],
24        messages: {
25            async: "Promise executor functions should not be async."
26        }
27    },
28
29    create(context) {
30        return {
31            "NewExpression[callee.name='Promise'][arguments.0.async=true]"(node) {
32                context.report({
33                    node: context.getSourceCode().getFirstToken(node.arguments[0], token => token.value === "async"),
34                    messageId: "async"
35                });
36            }
37        };
38    }
39};
40