eslint-community / eslint-plugin-promise

Enforce best practices for JavaScript promises
ISC License
943 stars 91 forks source link

New Rule: Prefer `Promise.resolve(foo)` to `new Promise((resolve) => resolve(foo))` #448

Open NotWoods opened 9 months ago

NotWoods commented 9 months ago

Description

Rule to recommend using Promise static resolve/reject methods over new Promise, which saves a microtick and is more readable.

Using new Promise for simple use cases is a common mistake when developers first start working with promises. This rule would check for simple use cases, where resolve or reject is immediately called in the promise executor. If the executor function is more complex then the rule isn't triggered.

Possible name: prefer-promise-static-methods

Steps to Reproduce

Lint the given code and expect to see errors

new Promise((resolve) => resolve(foo));
new Promise((resolve) => { resolve(foo) });
// autofix to Promise.resolve(foo);

new Promise((_, reject) => reject(foo));
new Promise((_, reject) => { reject(foo) });
// autofix to Promise.reject(foo);

Versions

N/A

Additional Information

Willing to submit a PR, I've already written this rule internally for Microsoft and would like to upstream it

voxpelli commented 5 months ago

I like the idea and a PR would be much appreciated 🙏