恥ずかしながら私はPromiseのthenとcatchの順番に意味があるとは知りませんでした

どういうこと?

catch => thenで書いたときとthen => catchで書いたときの挙動が異なります。

次のコードを用意しました。

ボタンを左から順番に押してみるとどういうことかわかると思います。

See the Pen then catchの順番によって意図しないコードになる by serinuntius (@serinuntius) on CodePen.

そうです。最後のボタンを押したときだけ2回alertが出ましたね。

最後のボタンは catch => thenの順序で描いて、条件的にcatchに入るパターン です。

使い分けると便利?かもしれません。おそらく大半のケースで then => catch という順序で書いた方が意図する実行結果になるということがわかりました。

今回はたまたまFirebaseのドキュメントを見ながら書いていて、catchが書いてあったからそこにthenを足したことで気づきましたw