I don’t think chaining promises are dead or will go away soon. You can be creative while doing Promise chaining enabling different code reuse patterns not described here. My point is chaining promises is not always
.then(() => doThat())
.then(() => someOtherThing())
You can also do things like
const asyncF = each(
each can be implemented as a reduce function. Where readability and code reuse are inherent since is all functions.