I see there is an eslint rule, no-return-await
, for disallowing return await
.
In the rule's description, it states a return await
adds "extra time before the overarching Promise resolves or rejects"
.
However, when I look at MDN async
function docs, the "Simple Example" shows an example containing return await
without any description of why this might be a performance problem.
Is return await
an actual performance problem as the eslint docs suggest?
And if so, how?
No, there isn't any performance problem. It's just an unnecessary extra operation. It might take a bit longer to execute, but should be hardly noticeable. It's akin to return x+0
instead of return x
for an integer x
. Or rather, exactly equivalent to the pointless .then(x => x)
.
It doesn't do actual harm, but I'd consider it bad style and a sign that the author does not fully comprehend promises and async
/await
.
However, there's one case where it make an important difference:
try {
…
return await …;
} …
await
does throw on rejections, and in any case awaits the promise resolution before catch
or finally
handlers are executed. A plain return
would have ignored that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With