非同期処理は、別のスレッドを、OS 管理の下、OS のタイミングで動作させるから、
元のスレッドから操作できないし、どちらが先に実行されているかもわからない、
と覚えておけばよい

だから、元のスレッドは、非同期処理の終了を待つ事しかできない

JS は、ES3, 5, 6 と加速度的に難しくなっていく。
やれば何とかなるのは、ES3 の話だろ

初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017

これを読んでみ。
全員が逃げ出すはずw