Object.assign does partially modify objects if it throws, per https://twitter.com/awbjs/status/454320863093862400
v0.3.1