Rule: promise-function-async

Requires any function or method that returns a promise to be marked async.

Rationale

Ensures that each function is only capable of 1) returning a rejected promise, or 2) throwing an Error object. In contrast, non-async Promise-returning functions are technically capable of either. This practice removes a requirement for consuming code to handle both cases.

If no optional arguments are provided then all function types are checked, otherwise the specific function types are checked:

  • "check-function-declaration" check function declarations.
  • "check-function-expression" check function expressions.
  • "check-arrow-function" check arrow functions.
  • "check-method-declaration" check method declarations.
Notes:

Config

Not configurable.

Config examples
"promise-function-async": true
"promise-function-async": [true, "check-function-declaration", "check-method-declaration"]
Schema
{
  "type": "array",
  "items": {
    "type": "string",
    "enum": [
      "check-function-declaration",
      "check-function-expression",
      "check-arrow-function",
      "check-method-declaration"
    ]
  },
  "minLength": 0,
  "maxLength": 4
}