I mainly write embedded software rather than web stuff. I will say that the hardest to read and maintain embedded code I've ever had to work with was structured to use asynchronous chains of callback functions. It can get bad enough that you just can't fix a bug without dousing it with gasoline and lighting it up. Not to say that such patterns can't be used effectively, but maybe your former co-workers had some previous emotional trauma!
Promise chains are usually totally fine and readable, it's when callbacks are passed around without promises or bad abstractions occur that async code is problematic.
More often than not I would not touch code written with promises because it doesn't matter anyways since code using it can still use async/await + sometimes it makes some patterns easier to deal with (f.e. using a dependency written with callbacks and calling resolve from within the callback function)