@lsmith no, you were right. Consider the following events:

1. Create promise
2. Don't call then()
3. Resolve the promise

fulfill() and reject() both replace the subs array with an empty new one synchronously. The following calls to then() will auto fire notify() always with one sub. But in the first case (no calls to then() before resolution) there may be an empty list.