promise/no-callback-in-promise Correctness
What it does
Disallows calling a callback function (cb()) inside a Promise.prototype.then() or Promise.prototype.catch().
Why is this bad?
Directly invoking a callback inside a then() or catch() method can lead to unexpected behavior, such as the callback being called multiple times. Additionally, mixing the callback and promise paradigms in this way can make the code confusing and harder to maintain.
Examples
Examples of incorrect code for this rule:
function callback(err, data) {
console.log("Callback got called with:", err, data);
throw new Error("My error");
}
Promise.resolve()
.then(() => callback(null, "data"))
.catch((err) => callback(err.message, null));Examples of correct code for this rule:
Promise.resolve()
.then((data) => {
console.log(data);
})
.catch((err) => {
console.error(err);
});Configuration
This rule accepts a configuration object with the following properties:
callbacks
type: string[]
default: ["callback", "cb", "done", "next"]
List of callback function names to check for within Promise then and catch methods.
exceptions
type: string[]
default: []
List of callback function names to allow within Promise then and catch methods.
How to use
To enable this rule in the CLI or using the config file, you can use:
oxlint --deny promise/no-callback-in-promise --promise-plugin{
"plugins": ["promise"],
"rules": {
"promise/no-callback-in-promise": "error"
}
}