Como funciona Promise.finally() no JavaScript?

Introduzido no ES2018, Promises agora podem usufruir de um novo recurso para controlar o fluxo de operações através do método .finally().

A proposta do Promise.finally() é executar operações independentemente da execução dos métodos .then() e .catch().

Essa proposta é muito semelhante com a abordagem try {} catch {} finally {}, a diferença é que a declaração finally {} consegue retornar valores e Promise.finally() não, Promise.finally() consegue retornar apenas exceções via throw.

let loading = true

fetch('https://...')
  .then((response) => { ... })
  .catch((error) => { ... })
  .finally(() => { loading = false })

Legal, né?

LoFM.