anchor.diff:  console.log("outer promise");// <2>
   ----
   
  -`promise.then` で登録したコールバック関数は常に非同期的に呼び出されているわけです。
  +可以看出在`promise.then` 中注册的回调函数都是以异步方式进行调用的。
   
   [NOTE]
   ====
  -実際にはこのような `setTimeout` や `setImmediate` を使ったような明示的な非同期処理は、
  -コードとして書く必要はありません。
  -仕様的には、`promise.then` はコールバック関数を `EnqueueTask` する、
  -つまりキューに入れると表現されています。
  +在实际运用的时候我们不需要使用 `setTimeout` 或 `setImmediate` 等进行显示的异步方法调用。从设计上来说， `promise.then` 方法会将回调函数进行 `EnqueueTask` 操作，即将这个函数插入到队列中去。
   ====
   
  -仮に、Promiseが同期的にコールバック関数を呼び出す仕様になっているとします。
  -
  -> `promise.then` の時点でpromiseの状態が決まっていたら、同期的にコールバック関数を呼び出す
  -
  -その場合、実行結果は以下のようになっているはずですね。
  +假如Promise使用同步的方式对回调函数进行调用的话，在调用 `promise.then` 的时候promise的状态已经确定，如果使用同步调用方式的话，运行结果将会像下面一样。
   
   ----
   inner promise
  
positive.code: include::embed/embed-async-onready.js[]
  ----
  
  この問題については、 http://effectivejs.com/[Effective JavaScript] の
  **項目67 非同期コールバックを同期的に呼び出してはいけない** で紹介されています。
  
  [quote, David Herman, Effective JavaScript]
  ____
  - 非同期コールバックは（たとえデータが即座に利用できても）決して同期的に使ってはならない。
  - 非同期コールバックを同期的に呼び出すと、処理の期待されたシーケンスが乱され、
  コードの実行順序に予期しない変動が生じるかもしれない。
  - 非同期コールバックを同期的に呼び出すと、スタックオーバーフローや例外処理の間違いが発生するかもしれない。
  - 非同期コールバックを次回に実行されるようスケジューリングするには、`setTimeout` のような非同期APIを使う。
  ____
  
  先ほどの `promise.then` も同様のケースであり、この同期と非同期処理の混在の問題が起きないようにするため、
  **Promiseは常に非同期** で処理されるという事が仕様で定められているわけです。
  
  最後に、この `onReady` をPromiseを使って定義すると以下のようになります。
  
  [role="executable"]
  [source,javascript]
  
negative.code: console.log("outer promise");// <2>
  ----
  
  执行上面的代码会输出下面的log，从这些log我们清楚地知道了上面代码的执行顺序。
  
  ----
  inner promise
  