Before ES2018, I used to nest an extra then at the end of the promise chain whenever I had to perform any clean up logic that I'd otherwise duplicate in then and catch above, e.g.
new Promise(
(res, rej) => setTimeout(() => rej({}), 1000)
).then(
res => console.log(res)
).catch(
err => console.error(err)
).then(
() => console.log('Finally')
)
But now that finally was added on the Promise prototype, I can't see how it's different from the last then in the above approach. The following will produce identical output.
new Promise(
(res, rej) => setTimeout(() => rej({}), 1000)
).then(
res => console.log(res)
).catch(
err => console.error(err)
).finally(
() => console.log('Finally')
)
Does finally merely serve a semantic purpose in the native Promise API?