I think we should try to isolate this into its own method. And only call that method where / when necessary. My guess is `update_totals` is called in too many places and most of them we might not care about the promo_total at all.

One of the biggest performance issues I've seen so far in spree code base, besides the whole activerecord callback thing, was a bunch of these `order.update!` calls which basically meant *hey I've got no idea whats going on so let's just grab the whole thing and update it*. We should move away from that and try to do isolated calls in each specific scenario. I know that's harder but I think it's worth it.

Wdyt we call it on OrderContents only when we know that a promotion action happened for example? (thinking out lout here) :)