the second `assert.fail` will catch the errors of both first promise and the first promise's success handler. So:

```js
foo().then(A, assert.fail).then(B, assert.fail).then(null, assert.fail);
```

Can be wrote as:

```js
foo().then(A).then(B).then(null, assert.fail);
```

The comment is needed if there is any specific reason because the code can't be wrote in such way, that is how the promises work (the latest reject function takes all the errors of the previous).