middleware ってどうやって呼んでるのん?

Nuxt で Layoutに設定したミドルウェアがどのような順序で実行されているのか調べてみました。
Promise.all で呼んでたりするのかな?

該当コード

呼んでいる

https://github.com/nuxt/nuxt.js/blob/fb978b812a3790f3e0be386931a75662e6903fe5/lib/app/server.js#L131

よばれている

結果

  • Promise.all では実行されていなかった。
  • middlewareSeries というファンクションで実行されているみたい

middlewareSeries

export function middlewareSeries(promises, appContext) {
  if (!promises.length || appContext._redirected || appContext._errored) {
    return Promise.resolve()
  }
  return promisify(promises[0], appContext)
  .then(() => {
    return middlewareSeries(promises.slice(1), appContext)
  })
}

then句 内で次のPromise を再帰的に呼んでるみたい。
てことは middlewareは 指定した順番通りに実行されると思っていいのかな?

ES初心者なのでわかっていないかも・・・
間違ってたら教えてください。