# no-async-promise-executor
Disallow async functions as promise executors.
Promise executors are special functions inside new Promise()
constructors which take a resolve
and
reject
parameter to resolve or reject the promise. The function is a normal function therefore it could be
an async function. However this is usually wrong because:
– Any errors thrown by the function are lost.
– It usually means the new promise is unnecessary.
# Incorrect code examples
let foo = new Promise(async (resolve, reject) => {
doSomething(bar, (err, res)) => {
/* */
});
});
let foo = new Promise(async function(resolve, reject) => {
/* */
});
# Correct code examples
Use a normal non-async function.
let foo = new Promise(function(resolve, reject) => {
/* */
})
More incorrect examples
new Promise(async () => {})
new Promise(async function*() {})
new Promise(async function() {}, foo)
More correct examples
new Promise(() => {})
new Promise(function foo() {}, foo)