Skip to content
← Back to rules

promise/catch-or-return Restriction

What it does ​

Ensure that each time a then() is applied to a promise, a catch() must be applied as well. Exceptions are made for promises returned from a function.

Why is this bad? ​

Not catching errors in a promise can cause hard to debug problems or missing handling of error conditions. In the worst case, unhandled promise rejections can cause your application to crash.

Examples ​

Examples of incorrect code for this rule:

javascript
myPromise.then(doSomething);
myPromise.then(doSomething, catchErrors); // catch() may be a little better

Examples of correct code for this rule:

javascript
myPromise.then(doSomething).catch(errors);
function doSomethingElse() {
  return myPromise.then(doSomething);
}
const arrowFunc = () => myPromise.then(doSomething);

Configuration ​

This rule accepts a configuration object with the following properties:

allowFinally ​

type: boolean

default: false

Whether to allow finally() as a termination method.

allowThen ​

type: boolean

default: false

Whether to allow then() with two arguments as a termination method.

allowThenStrict ​

type: boolean

default: false

Whether to allow then(null, handler) as a termination method.

terminationMethod ​

type: array | string

terminationMethod[n] ​

type: string

How to use ​

To enable this rule using the config file or in the CLI, you can use:

json
{
  "plugins": ["promise"],
  "rules": {
    "promise/catch-or-return": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  plugins: ["promise"],
  rules: {
    "promise/catch-or-return": "error",
  },
});
bash
oxlint --deny promise/catch-or-return --promise-plugin

Version ​

This rule was added in v0.9.2.

References ​