anchor.diff:  });
   ----
   
  -<<notification-thenable.js>> には `notifyMessageAsThenable` というそのままのメソッドを追加してみました。
  -返すオブジェクトには `then` というメソッドがあります。
  -
  -`then` メソッドの仮引数には `new Promise(function (resolve, reject){})` と同じように、
  -解決した時に呼ぶ `resolve` と、棄却した時に呼ぶ `reject` が渡ります。
  -
  -`then` メソッドがやっている中身は<<notification-as-promise.js>>の `notifyMessageAsPromise` と同じですね。
  -
  -この `thenable` を `Promise.resolve(thenable)` を使いpromiseオブジェクトにしてから、
  -Promiseとして利用していることが分かりますね。
  +<<notification-thenable.js>>里增加了一个 `notifyMessageAsThenable`方法。这个方法返回的对象具备一个`then`方法。 
  +
  +`then`方法的参数和 `new Promise(function (resolve, reject){})` 一样，在确定时执行 `resolve` 方法，拒绝时调用 `reject` 方法。
  +
  +`then` 方法和 <<notification-as-promise.js>> 中的 `notifyMessageAsPromise` 方法完成了同样的工作。
  +
  +我们可以看出， `Promise.resolve(thenable)` 通过使用了  `thenable` 这个promise对象，就能利用Promise功能了。
   
   [source,javascript]
   ----
  
positive.code: });
  ----
  
  Thenableを使った<<notification-thenable.js>>とPromiseに依存した<<notification-as-promise.js>>は、
  非常に似た使い方ができることがわかります。
  
  <<notification-thenable.js>>には<<notification-as-promise.js>>と比べた時に、次のような違いがあります。
  
  * ライブラリ側に `Promise` 実装そのものはでてこない
  ** 利用者が `Promise.resolve(thenable)` を使い `Promise` の実装を与える
  * Promiseとして使う時に `Promise.resolve(thenable)` と一枚挟む必要がある
  
  <<Thenable,Thenable>>オブジェクトを利用することで、
  既存のコールバックスタイルとPromiseスタイルの中間的な実装をすることができました。
  
  === 总结
  
  このセクションではThenableとは何かやThenableを `Promise.resolve(thenable)` を使って、
  promiseオブジェクトとして利用する方法について学びました。
  
  Callback -- Thenable -- Promise
  
  Thenableスタイルは、コールバックスタイルとPromiseスタイルの中間的な表現で、
  ライブラリが公開するAPIとしては中途半端なためあまり見かけることがないと思います。
  
  Thenable自体は `Promise` という機能に依存してはいませんが、Promise以外からの利用方法は特にないため、
  間接的にはPromiseに依存しています。
  
  また、使うためには利用者が `Promise.resolve(thenable)` について理解している必要があるため、
  ライブラリの公開APIとしては難しい部分があります。
  Thenable自体は公開APIより、内部的に使われてるケースが多いでしょう。
  
  [NOTE]
  ====
  非同期処理を行うライブラリを書く際には、まずはコールバックスタイルの関数を書いて公開APIとすることをオススメします。
  
  Node.jsのCore moduleがこの方法をとっているように、ライブラリが提供するのは基本となるコールバックスタイル関数としたほうが、
  利用者がPromiseやGenerator等の好きな方法で実装ができるためです。
  
  最初からPromiseで利用することを目的としたライブラリや、その機能がPromiseに依存している場合は、
  promiseオブジェクトを返す関数を公開APIとしても問題ないと思います。
  ====
  
  ==== 什么时候该使用Thenable？
  
  那么，又是在什么情况下应该使用Thenable呢？
  
  恐らく、一番多く使われている所は<<promise-library,Promiseのライブラリ>>間での相互変換でしょう。
  
  例えば、 QライブラリのPromiseのインスタンスであるQ promiseオブジェクトは、
  <<es6-promises,ES6 Promises>>のpromiseオブジェクトが持っていないメソッドを持っています。
  Q promiseオブジェクトには `promise.finally(callback)` や `promise.nodeify(callback)` などのメソッドが用意されてます。
  
  ES6 PromisesのpromiseオブジェクトをQ promiseオブジェクトに変換するときに使われるのが、
  まさにこのThenableです。
  
  [source,javascript]
  .使用thenable将promise对象转换为Q promise对象
  
negative.code: 
  上面的 <<notification-as-promise.js>> 虽然看上去很方便，但是实际上使用的时候，很可能出现 **在不支持Promise的环境下不能使用** 的问题。
  
  如果你想编写像<<notification-as-promise.js>>这样具有Promise风格和的类库的话，我觉得你有如下的一些选择。
  
  [[promise-library-choice]]
  支持Promise的环境是前提::
  * 需要最终用户保证支持`Promise`
  * 在不支持Promise的环境下不能正常工作（即应该出错）。
  在类库中实现`Promise`::
  * 在类库中实现`Promise`功能
  * 例如） https://github.com/mozilla/localForage[localForage]
  在回调函数中也应该能够使用 `Promise`::
  * 用户可以选择合适的使用方式
  * 返回Thenable类型
  
  <<notification-as-promise.js>>就是以`Promise`存在为前提的写法。
  
  回归正文，在这里<<Thenable,Thenable>>是为了帮助实现**在回调函数中也能使用`Promise`**的一个概念。
  
  === Web Notifications As Thenable
  
  我们已经说过，<<Thenable,thenable>>就是一个具有 `.then`方法的一个对象。下面我们就在<<notification-callback.js>>中增加一个返回值为 `thenable` 类型的方法。 
  
  [role="executable"]
  [source,javascript]
  