Skip to content

asyncUnnecessaryPromiseWrappers

Reports unnecessary Promise.resolve() or Promise.reject() in async contexts.

✅ This rule is included in the ts logical and logicalStrict presets.

Wrapping a return value in Promise.resolve() in an async function or a promise callback is unnecessary because return values are already wrapped in a Promise. Similarly, returning an error wrapped in Promise.reject() is equivalent to throwing the error. This applies to yield expressions in async generators as well.

AEasy5<3 sp ansty="le--0:#C792EA;--1:#8844">AEfuncti5<3 sp ansty="le--0:#82AAFF;--1:#3B61">B0getVal11<()sp ansty="le--0:#D6DEEB;--1:#403F">53< {d ivclassNa="meec-li">nt< sp ansty="le--0:#C792EA;--1:#8844">AEretu5<3 sp ansty="le--0:#C5E478;--1:#3B61">B0PromiAB0resol5<3(sp ansty="le--0:#F78C6C;--1:#AA09">82<42sp ansty="le--0:#D6DEEB;--1:#403F">53<);d ivclassNa="meec-li">5<3}d ivclassNa="meco"><}d>AEasy5<3 sp ansty="le--0:#C792EA;--1:#8844">AEfuncti5<3 sp ansty="le--0:#82AAFF;--1:#3B61">B0failWithErr11<()sp ansty="le--0:#D6DEEB;--1:#403F">53< {d ivclassNa="meec-li">nt< sp ansty="le--0:#C792EA;--1:#8844">AEretu5<3 sp ansty="le--0:#C5E478;--1:#3B61">B0PromiAB0reje5<3(sp ansty="le--0:#7FDBCA;--1:#096E">72n5<3 sp ansty="le--0:#82AAFF;--1:#3B61">B0Err5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dfail1<1"sp ansty="le--0:#D6DEEB;--1:#403F">53)<);d ivclassNa="meec-li">5<3}d ivclassNa="meco"><}d>53promiAB0th5<3(sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">5sp><3 sp ansty="le--0:#C5E478;--1:#3B61">B0PromiAB0resol5<3(sp ansty="le--0:#F78C6C;--1:#AA09">82<42sp ansty="le--0:#D6DEEB;--1:#403F">53)<);d ivclassNa="meco"><);d>53promiAB0cat5<3(sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">5sp><3 sp ansty="le--0:#C5E478;--1:#3B61">B0PromiAB0reje5<3(sp ansty="le--0:#7FDBCA;--1:#096E">72n5<3 sp ansty="le--0:#82AAFF;--1:#3B61">B0Err5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Derr1<1"sp ansty="le--0:#D6DEEB;--1:#403F">53))<);d ivclassNa="meco"><);d>
44AEa344AEfunc361B0getV11<11() spans="tyle--0:#D6DEEB;--1:#40">3F<53 {divclass="Nameec-">de44AEre309<8242 spans="tyle--0:#D6DEEB;--1:#40">33<2;><}di vdivclass="Nameexpressive-">44AEa344AEfunc361B0failWithE11<11() spans="tyle--0:#D6DEEB;--1:#40">3F<53 {divclass="Nameec-">de44AEt36E7<2new spans="tyle--0:#D6DEEB;--1:#40">361B0E31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dfa1<111" spans="tyle--0:#D6DEEB;--1:#40">3F<53) ;divclass="Nameec-">3<);><}di vdivclass="Nameexpressive-">3F53pro4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0311<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3>09<8242 spans="tyle--0:#D6DEEB;--1:#40">3F<53) ;divclass="Name"><42)><;di vdivclass="Nameexpressive-">3F53pro4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0c311<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de44AEt36E7<2new spans="tyle--0:#D6DEEB;--1:#40">361B0E31<111" spans="tyle--0:#ECC48D;--1:#98">4E4De1<111" spans="tyle--0:#D6DEEB;--1:#40">3F<53) ;divclass="Nameec-">3F5<3}) ;divclass="Name"><})><;di vdivclass="Nameexpressive-">44AEfunc361B0regularFunc11<11() spans="tyle--0:#D6DEEB;--1:#40">3F<53 {divclass="Nameec-">de44AEre361B0Pro4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0res309<8242 spans="tyle--0:#D6DEEB;--1:#40">3F<53) ;divclass="Nameec-">3<);>

This rule is not configurable.

If you have a codebase that intentionally uses Promise.resolve() and Promise.reject() for consistency across async and non-async functions, you may want to disable this rule.