Adding the return statement works, but works in a "tricky" way. Essentially, you are mutating what the deferred will resolve. I'm not sure this is the intended philosophy of deferreds. If some other code did this, you'd be rather annoyed. However, this is fast.
For a slower, but more robust solution, you could use pipe, copy the data, change the property, and return it.
I'm not saying you should use pipe, more you should know it exists for these types of things.