Skip to content
NewBun 1.4.5 is out. Release notes
AphrodyBun

Linter · Rules

promise/param-names

Require the parameters of a new Promise() executor to be named resolve and reject

The function you pass to new Promise() gets its two parameters by position, no matter what you call them. If you write them in the wrong order, reject(value) fulfills the promise and resolve(error) rejects it.

The first parameter must be resolve or _resolve, and the second must be reject or _reject. You can leave out parameters you don't use.

Configure

Off by default. To turn it on:

bunfig.toml
[lint.rules]
"promise/param-names" = "error" # or "warn"

Every option, set to its default:

bunfig.toml
[lint.rules]
"promise/param-names" = ["error", {
  resolvePattern = "^_?resolve$",
  rejectPattern = "^_?reject$",
}]

Examples

Reported:

new Promise((reject, resolve) => {
  setTimeout(resolve, 1000); // rejects the promise
});
new Promise(done => {
  setTimeout(done, 1000);
});

Not reported:

new Promise(resolve => {
  setTimeout(resolve, 1000);
});

new Promise((_resolve, reject) => {
  setTimeout(reject, 1000);
});

Options

OptionDefaultWhat it does
resolvePattern"^_?resolve$"A regular expression that the first parameter's name must match.
rejectPattern"^_?reject$"A regular expression that the second parameter's name must match.
new Promise((done, fail) => {
  socket.once("open", done);
  socket.once("error", fail);
});