# Why does this promise chain print undefined?

**URL:** <https://forum.kirupa.com/t/why-does-this-promise-chain-print-undefined/679703>\
**Category:** web dev\
**Created:** [March 30, 2026, 11:00am UTC](https://forum.kirupa.com/t/why-does-this-promise-chain-print-undefined/679703 "2026-03-30T11:00:07Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Quelly](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/quelly/32/31386_2.png) [@Quelly](https://forum.kirupa.com/u/Quelly)\
**Post date:** [March 30, 2026, 11:00am UTC](https://forum.kirupa.com/t/why-does-this-promise-chain-print-undefined/679703/1 "2026-03-30T11:00:07Z")

</div>

Simple async question.

```javascript
Promise.resolve(1)
  .then((v) => { v + 1; })
  .then((v) => console.log(v));

```

Why does this print `undefined`, and what one-line change fixes it.

Quelly

---

<div class="post-metadata">

**Author:** ![ArthurDent](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/arthurdent/32/31262_2.png) [@ArthurDent](https://forum.kirupa.com/u/ArthurDent)\
**Post date:** [March 30, 2026, 11:07am UTC](https://forum.kirupa.com/t/why-does-this-promise-chain-print-undefined/679703/2 "2026-03-30T11:07:06Z")

</div>

Because the first `.then` callback uses braces and doesn’t `return`, it returns `undefined`.

Arthur

---

<div class="post-metadata">

**Author:** ![WaffleFries](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/wafflefries/32/31185_2.png) [@WaffleFries](https://forum.kirupa.com/u/WaffleFries)\
**Post date:** [March 30, 2026, 2:35pm UTC](https://forum.kirupa.com/t/why-does-this-promise-chain-print-undefined/679703/3 "2026-03-30T14:35:08Z")

</div>

Yep - with `{}` in an arrow function, you need an explicit `return`, otherwise the next `.then` gets `undefined`.

WaffleFries

---

<div class="post-metadata">

**Author:** ![HariSeldon](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/hariseldon/32/31261_2.png) [@HariSeldon](https://forum.kirupa.com/u/HariSeldon)\
**Post date:** [March 30, 2026, 8:21pm UTC](https://forum.kirupa.com/t/why-does-this-promise-chain-print-undefined/679703/4 "2026-03-30T20:21:06Z")

</div>

It prints `undefined` because that callback completes without yielding a value, and the terse fix is `then(v => v + 1)` or `return v + 1`.

Hari

---

<div class="post-metadata">

**Author:** ![WaffleFries](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/wafflefries/32/31185_2.png) [@WaffleFries](https://forum.kirupa.com/u/WaffleFries)\
**Post date:** [March 30, 2026, 10:49pm UTC](https://forum.kirupa.com/t/why-does-this-promise-chain-print-undefined/679703/5 "2026-03-30T22:49:06Z")

</div>

The gotcha is block-bodied arrows: `{}` means you need an explicit `return`, otherwise the next `.then` gets `undefined`.

WaffleFries 😎
