Differences between promises and thenables

Taken from ECMAScript® 2027 Language Specification :

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 Specification :

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?

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.

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.

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.

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