Technically this conflicts with "If `x` is a thenable, run `Assimilate(promise, x)`", since that'll lead to `resolvePromise` being called multiple times. Perhaps it should be clarified that a) `resolvePromise` is whatever means of resolving the promise who's trying to assimilate `thenable`'s state, and b) this restriction only applies to the current assimilation.

Note that without b), a broken `thenable` could do the following:

```js
var thenable = {
  then: function(resolve){
    resolve(otherThenable);
    resolve(true);
  }
};
```