The author is basically wishing promises were observables. I really like that they aren't. To me, then() being both map() and flatMap() is one of the killer features about promises. I find having both functions in observables really makes them a lot more finicky to use.
Promises are an abstraction on top of callbacks. A callback based function is also eager. Once you invoke it, you're off to the races. Same thing with creating a promise. I don't see this as a bad thing.
Promises aren't cancelable, but neither are callback based functions.
I like promises just the way they are. The fact that they lend themselves so well to async/await shows they are well designed IMO.