0.1.0 • Published 5 months ago

eslint-plugin-no-unawaited-dot-catch-throw v0.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

no-unawaited-dot-catch-throw

Description

An ESLint rule to highlight when throw statements are used inside unawaited .catch() blocks.

Using --fix will attempt to replace these with an empty string.

Installation

npm i eslint-plugin-no-unawaited-dot-catch-throw -D

Add this to your ESLint config file

  "plugins": [
    "no-unawaited-dot-catch-throw"
  ],
  "rules": {
      "no-unawaited-dot-catch-throw/enforce-no-unawaited-dot-catch-throw": "error"
  }

Rule Details

A throw ; statement inside an unawaited .catch() statement has no effect on the code execution flow of the program. This rule aims to highlight when this is done.

Rule Details

Examples of incorrect code for this rule:

::: incorrect

/* eslint no-unawaited-dot-catch-throw: "error" */

const myAsyncFunction = async () => { 
  // some asynchronous task
};

// Function isn't awaited, a re-throw will not effect code-flow
myAsyncFunction().catch((error) => {
  console.error(error);
  throw error;
});

:::

Examples of correct code for this rule:

::: correct

/* eslint no-unawaited-dot-catch-throw: "error" */

const myAsyncFunction = async () => { 
  // some asynchronous task
};

// Unawaited, but catch does not re-throw
myAsyncFunction().catch((error) => {
  console.error(error);
});

// Promise chain is returned to caller
return myAsyncFunction().catch((error) => {
  console.error(error);
  throw error;
});

// Function is awaited, a re-throw will still terminate code-flow
await myAsyncFunction().catch((error) => {
  console.error(error);
  throw error;
});

:::

When Not To Use It

If you don't care about disallowing throw statements that don't affect execution flow, you can turn off this rule.

References

Thanks to https://www.mariokandut.com/how-to-write-custom-eslint-rule/ for the guide.

0.1.0

5 months ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago