MDNの 「awaitはasync functionのために」 という説明は、"await関数はasync関数の内部でだけ利用できる" という制限や制約として説明していないため、とてもわかりにくい。 async関数の外や、スクリプトの1行目からawaitと書くと文法エラーになるのだが、「エラーになります」ということも書かれていない。

「仕様」だという EcmaScript AsyncFunctionのページは見出しを見るだけでは誰が書いたかわからない「怪文書」の体裁になっている。githubにある「仕様」なので誰が作ったかわからないようにしているのかと感じる。

内容はどうかというと概要説明の次がExampleで、仕組みの説明がない。Promise()を使い慣れた人ならなんとなくわかる説明だが、「ほら、Promiseが書きやすくなったでしょう!」と言われても、初めて見ると何を言いたいのかわからない。「そんなのあたりまえの構文でしょう!」と感じる。

Exampleしかなく、その構造や制限(feature)の説明がないのはAWSの資料と似ている。副作用が書かれていない資料は多いが、特にJavaScript async/awaitの資料でおかしいのは、「非同期処理の記述方法の問題」を解決したというのに「非同期処理をどう扱っているか」「非同期処理をどう見せたからよいのか」ということがない。非同期処理を捨てたわけではなく、ほぼ完全に維持しているということがかかれていない。

Introductionで usecaseは yieldと同じという部分もあるが、usecaseへのリンクがなく、何を課題にしたのかわからない。

別のライブラリから移植しただけだから課題なんてあるわけない、ということなのか。

EcmaScriptの「仕様」のすごいのは、yaccかlexのようなコンピューター言語の構文解析ルールが列挙されているが説明がないこと。JavaScriptがスクリプトを解釈するためのコードを掲載して「仕様だ」と主張するところがすごすぎる。できないことが書かれていないのは、ほぼすべてのドキュメントに共通だが。

これが数社が協力して作るドキュメントなのだが、JavaScriptはやはりなんちゃって言語のままということか。yaccとlexの構文解析コードがあるんだから、頭が悪く何度も説明が必要な人間が使うものではなく、AIだけが使うべきものなのか。