I'll echo what rektide said, but add that the flat code is easier to modify. It's easy to add another promise anywhere in the flat chain, and it's easy to add conditional logic if you need to. In addition, I think we'll see easy-to-reason-about operators built on top of the promise "primitive" that you couldn't even imagine for the nested code.