It may lead to subtle bugs when changing between implementations. Though I suspect the lowest common denominator is it being attached to `promise`, and whether it's a free function doesn't take away from that.

Applying `then` to a different promise object is undefined, so we shouldn't have to worry about edge cases there.