# Differences between promises and thenables

**URL:** <https://es.discourse.group/t/differences-between-promises-and-thenables/2613>\
**Category:** I have questions\
**Created:** [June 28, 2026, 7:27am UTC](https://es.discourse.group/t/differences-between-promises-and-thenables/2613 "2026-06-28T07:27:35Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![John-Clint](https://avatars.discourse-cdn.com/v4/letter/j/a88e4f/32.png) [@John-Clint](https://es.discourse.group/u/John-Clint)\
**Post date:** [June 28, 2026, 7:27am UTC](https://es.discourse.group/t/differences-between-promises-and-thenables/2613/1 "2026-06-28T07:27:35Z")

</div>

Taken from [ECMAScript® 2027 Language&nbsp;Specification](https://tc39.es/ecma262/#sec-promise-objects) :

> A Promise is an object that is used as a placeholder for the eventual results of a deferred (and possibly asynchronous) computation.

I don't think that this definition includes all thenables. If I'm correct, why does [ECMAScript® 2027 Language&nbsp;Specification](https://tc39.es/ecma262/#sec-promise-executor) :

> The argument passed to the resolve function represents the eventual value of the deferred action and can be either the actual fulfillment value or another promise which will provide the value if it is fulfilled.

say that promises aren't the actual fulfillment value, instead of saying that thenables aren't the actual fulfillment value? If you pass any thenable to `resolve`, it will behave like a promise in the sense that it isn't the actual fulfillment value, rather it will provide the fulfillment value when it is fulfilled.

Shouldn't this note say thenable instead of promise?

---

<div class="post-metadata">

**Author:** ![ljharb](https://yyz2.discourse-cdn.com/free1/user_avatar/es.discourse.group/ljharb/32/8_2.png) [@ljharb](https://es.discourse.group/u/ljharb)\
**Post date:** [June 29, 2026, 3:53pm UTC](https://es.discourse.group/t/differences-between-promises-and-thenables/2613/2 "2026-06-29T15:53:29Z")

</div>

It's using "promise" in the Promises/A+ spec sense, which describes any thenable, not in the ES sense, which is just a Promise. It could certainly say "thenable" there, as well.

---

<div class="post-metadata">

**Author:** ![John-Clint](https://avatars.discourse-cdn.com/v4/letter/j/a88e4f/32.png) [@John-Clint](https://es.discourse.group/u/John-Clint)\
**Post date:** [June 29, 2026, 6:29pm UTC](https://es.discourse.group/t/differences-between-promises-and-thenables/2613/3 "2026-06-29T18:29:18Z")

</div>

Thanks for the clarification. More of a general question, but how are readers supposed to know which definition a term is referring to when there's no hyperlink? Or is there no hyperlink because it's a note so the terms can be looser? Because I would've guessed that when a term has already been defined in the ecma spec, the ecma definition would be preferred over definitions from other specifications.

---

<div class="post-metadata">

**Author:** ![ljharb](https://yyz2.discourse-cdn.com/free1/user_avatar/es.discourse.group/ljharb/32/8_2.png) [@ljharb](https://es.discourse.group/u/ljharb)\
**Post date:** [June 29, 2026, 6:52pm UTC](https://es.discourse.group/t/differences-between-promises-and-thenables/2613/4 "2026-06-29T18:52:03Z")

</div>

You're totally right; "thenable" should be defined somewhere (and definitions are thus crosslinked). That's worth filing an issue on the spec repo for.

---

<div class="post-metadata">

**Author:** ![John-Clint](https://avatars.discourse-cdn.com/v4/letter/j/a88e4f/32.png) [@John-Clint](https://es.discourse.group/u/John-Clint)\
**Post date:** [June 29, 2026, 7:10pm UTC](https://es.discourse.group/t/differences-between-promises-and-thenables/2613/5 "2026-06-29T19:10:36Z")

</div>

There seem to be a 4 year old pr for this [Editorial: define thenable by ikravets · Pull Request #2869 · tc39/ecma262 · GitHub](https://github.com/tc39/ecma262/pull/2869), sadly it seems like "thenable" won't be defined in the spec anytime soon.
