How to Reject in a JavaScript async Function?

An async function rejects with whatever is thrown inside the function. Therefore, you simply need to throw an error inside the async function to make it reject. For example:

function wait(ms) {
    return new Promise((resolve) => setTimeout(resolve, ms));
}

async function foo() {
    await wait(1000);
    throw new Error('Woops!');
}

console.log(await foo()); // Uncaught Error: Woops!

As you can see in the example above, calling foo() returns a Promise that rejects with the Error 'Woops!'.

As an alternative, you can also explicitly return a rejected Promise using Promise.reject() in the following way:

function wait(ms) {
    return new Promise((resolve) => setTimeout(resolve, ms));
}

async function foo() {
    await wait(1000);
    return Promise.reject(new Error('Whoops!'));
}

console.log(await foo()); // Uncaught Error: Woops!

However, this approach is not idiomatic, and you should ideally, simply throw an error to reject in an async function.


Hope you found this post useful. It was published . Please show your love and support by sharing this post.