旧コードは Promise.all(asyncInitTasks) で 3 つのタスクを並列化しています。 実行順は保証されないものの、ログの順序を調整してエラーを拾っていました。ボタンでステップ毎の完了を疑似的に待ち、 エラー時のメッセージも出力します。
Promise.all(asyncInitTasks)
try { ... } catch { reject }
TextureLoader
catch → alert()