初めてのJavaScript 第3版、オライリー、2017

JS には、async/await が無いから、
この本では、generator runner の仕組みを説明している。
co, Koa というライブラリを使う

非同期処理は異なるコンテキストで、
別のスレッド・プロセスだから、どこを実行しているのか分からない。
実行順番も制御できないし、例外処理も使えない

generator runner は非同期処理を、yield で待つように作る。
これにより、非同期処理を同期処理のコンテキストに当てはめるから、
実行順番を制御できるし、例外処理も使える

try{
yield promise 非同期処理
} catch {
}