Is there any difference between
const foo = async () => {
// some other code that uses await
return await bar()
}
and
const foo = async () => {
// some other code that uses await
return bar()
}
Where bar is a function that returns a promise.
Is the await redundant or does it make any difference?
It is redundant.
It extracts the value from the promise returned by bar, and then resolves the promise returned by foo with it.
If you return bar's promise directly, then the promise returned by foo adopts it to the same effect.
If the Promise is rejected, the error would be thrown in different places, in the two example you wrote.
In the first, a rejected error would happen inside foo.
In the second, a rejected error would happen to the function that called foo
Yes.
If the function bar() returns a Promise, in the second case foo will return a pending Promise (a Promise that has not yet resolved). In the first case, foo will return the data the Promise resolved with after waiting for the Promise to resolve