from the spec, when resolving a sub-promise, I was not able to find which of these should be resolved first:
* a sub-sub-promise
* a sibling sub-promise

Given that the sub-sub-promise is resolved asynchronously and the sibling sub-promise is resolved synchronously, then this is why `finallyCC` is called before `successBB`

The only thing at the spec that I was able to find is
```
[...]In practice, this requirement ensures that onFulfilled and onRejected
execute asynchronously, after the event loop turn in which then is
called, and with a fresh stack.[...]
```

That somehow leans the balance towards the new order