promise/prefer-catch Style ​
What it does ​
Prefer catch
to then(a, b)
and then(null, b)
. This rule disallows the passing of an argument into the second parameter of then
calls for handling promise errors.
Why is this bad? ​
A then
call with two arguments can make it more difficult to recognize that a catch error handler is present. Another issue with using the second argument in then
calls is that the ordering of promise error handling is less obvious.
For example on first glance it may appear that prom.then(fn1, fn2)
is equivalent to prom.then(fn1).catch(fn2)
. However they aren't equivalent. In fact prom.catch(fn2).then(fn1)
is the equivalent. This kind of confusion is a good reason for preferring explicit catch
calls over passing an argument to the second parameter of then
calls.
Examples ​
Examples of incorrect code for this rule:
prom.then(fn1, fn2);
prom.then(null, fn2);
Examples of correct code for this rule:
prom.catch(fn2).then(fn1);
prom.catch(fn2);
How to use ​
To enable this rule in the CLI or using the config file, you can use:
oxlint --deny promise/prefer-catch --promise-plugin
{
"plugins": ["promise"],
"rules": {
"promise/prefer-catch": "error"
}
}