anchor.diff:  });
   ----
   
  -<<promise-assert-fail-fixed,ちゃんとテストが失敗する例>>では、必ず`done`が呼ばれるようにするため、
  +ちゃんとテストが失敗する例では、必ず`done`が呼ばれるようにするため、
   最後に`.then(done, done);`を追加しています。
   
   `assert`がパスした場合は単純に`done()`が呼ばれ、`assert`が失敗した場合は`done(error)`が呼ばれます。
  +
   これでようやく<<callback-style-test,コールバックスタイルのテスト>>と同等のPromiseのテストを書くことができました。
   
   しかし、`assert`が失敗した時のために`.then(done, done);`というものを付ける必要があります。
  -毎回やるにはつけ忘れてしまうこともあるため、あまりテストしやすいとは言えないかもしれません。
  +Promiseのテストを書くときにつけ忘れてしまうと終わらないテストが出来上がってしまう場合があることに気をつけましょう。
   
   次に、最初にmochaを使う理由に上げた"Promisesのテスト"をサポートしているという事がどういう機能なのかを学んでいきましょう。
  
positive.code:     });
  });
  ----
  <1> `onFulfilled`を呼ぶpromiseオブジェクトを作成
  <2> `done`を呼ぶことでテストの終了を宣言
  
  
  <<Promise.resolve, `Promise.resolve`>> はpromiseオブジェクトを返し、
  そのpromiseオブジェクトはresolveされます。
  
  <<promise-is-always-async,コラム: Promiseは常に非同期?>> でも出てきたように、
  promiseオブジェクトは常に非同期で処理されるため、テストも非同期に対応した書き方が必要となります。
  
  これで、Promiseのテストもできてるように見えますが、
  上記のテストコードでは`assert`が失敗した場合に問題が発生します。
  
  [source,js]
  [[promise-assert-fail]]
  ----
  it("should use `done` for test?", function (done) {
      var promise = Promise.resolve();
  
negative.code: });
  ----
  
  このテストは`assert`が失敗しているため、「テストは失敗する」と思うかもしれませんが、
  実際にはテストが終わることがなくタイムアウトします。
  
  .テストが終わることないためタイムアウトするまでそこで止まる
  image::img/promise-test-timeout.png[promise test timeout]
  
  `assert`が失敗した場合は通常はエラーをthrowし、
  テストフレームワークがそれをキャッチすることで、テストが失敗したと判断します。
  
  しかし、Promiseの場合は`.then`の中で行われた処理でエラーが発生しても、
  