anchor.diff:  * 普通的代码采用 `then` -> `catch` 的流程的话比较容易理解
   ** 这是为了错误处理的方便。请参考 <<then-or-catch,then or catch?>>
   * 将测试代码集中到 `then` 中处理
  -** 为了能将AssertionError传递到测试框架中。
  +** 为了能将AssertionError对象传递到测试框架中。
   
   通过使用 `.then(onFulfilled, onRejected)` 这种形式的写法，
  -可以明确指定promise对象在变为 Fulfilled或Rejected时如何进行处理。
  +我们可以明确指定promise对象在变为 Fulfilled或Rejected时如何进行处理。
   
   但是，由于需要显示的指定 Rejected时的测试处理，
   像下面这样的代码看起来总是有一些让人感到不太直观的感觉。
  
positive.code: });
  ----
  
  像这样的话，就能在promise变为FulFilled的时候编写失败用的测试代码了。
  
  .Promise onRejected test
  image::img/promise-test.png[Promise onRejected test]
  
  
  在 <<then-or-catch,then or catch?>> 中我们已经讲过，为了避免遗漏对错误的处理，
  与使用 `.then(onFulfilled, onRejected)` 的第二个参数相比，
  我们更推荐使用 `then` -> `catch` 这样的处理方式。
  
  但是在编写测试代码的时候，Promise强大的错误处理机制反而成了限制我们的障碍。
  
negative.code: 
  这段代码将前面 <<promise-assert-fail-fixed, 前面使用 `done` 的例子>> 按照Mocha的Promise测试方式进行了重写。
  
  修改的地方主要在以下两点：
  
  * 删除了 `done`
  * 返回结果为promise对象
  
  采用这种写法的话，当 `assert` 失败的时候，测试本身自然也会失败。
  
  [source,javascript]
  ----
  