The problem is _.extend modifies its first argument (as well as returning the value). Somehow, when this is set up with the WebRTC.parseOfferConstraints(offer.offer) as the first argument, then the `offer` object passed to the incoming function gets modified itself.