Well, be careful that you’re not comparing apples and oranges. For example, scala-async isn’t really a Future/Promise library – it’s a layer of syntax on top of standard-library Futures. Same underlying tech, but a different way of structuring code for it.
Broadly speaking, most folks who use Futures use the standard library implementation nowadays. There are a substantial number of alternate implementations of ExecutionContext, but that’s still within the stdlib architecture.
And many folks, especially in the FP community, eschew Futures for the most part, in favor of abstractions such as Tasks instead – to understand this approach, you may want to look into Monix, ZIO and/or cats-effect.