# JS Quiz: Easy: Async return in finally

**URL:** <https://forum.kirupa.com/t/js-quiz-easy-async-return-in-finally/682256>\
**Category:** web dev\
**Created:** [June 23, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-easy-async-return-in-finally/682256 "2026-06-23T07:00:10Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ellen1979](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/ellen1979/32/31260_2.png) [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Post date:** [June 23, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-easy-async-return-in-finally/682256/1 "2026-06-23T07:00:10Z")

</div>

What gets logged?

```js
async function f() {
  try {
    return 'A';
  } finally {
    return 'B';
  }
}

f().then(console.log);

```

_Poll ([view on site](https://forum.kirupa.com/t/js-quiz-easy-async-return-in-finally/682256/1))_

---

<div class="post-metadata">

**Author:** ![BobaMilk](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/bobamilk/32/31157_2.png) [@BobaMilk](https://forum.kirupa.com/u/BobaMilk)\
**Post date:** [June 24, 2026, 7:40am UTC](https://forum.kirupa.com/t/js-quiz-easy-async-return-in-finally/682256/2 "2026-06-24T07:40:20Z")

</div>

It logs `B`. A `return` inside `finally` overrides whatever happened in the `try` (even a `return 'A'`), so the async function’s promise resolves with `'B'` here.

This “finally wins” behavior is kind of scary tbh because it can hide errors too if you `throw` in `try` but `return` in `finally`.

---

<div class="post-metadata">

**Author:** ![Ellen1979](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/ellen1979/32/31260_2.png) [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Post date:** [July 1, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-easy-async-return-in-finally/682256/3 "2026-07-01T07:00:08Z")

</div>

JS Quiz answer: Option 2 (B).

Correct choice: B

Why:  
A `return` in `finally` overrides a previous `return` from `try`. The promise resolves to `B`, so the log is just `B`.

Go deeper:

[https://www.kirupa.com/html5/ai/advanced\_random\_numbers\_js.md](https://www.kirupa.com/html5/ai/advanced_random_numbers_js.md)

Ellen
