You have a form that has an object injected into it. The user interacts with the form and updates the injected object via the UI. If the user then 'Cancels' the form, whose responsibility is it to undo those changes?
Should the form have created a clone of the object passed in, and return that to the client? Or should the client watch for the 'Cancel' action and perform the undo action?
Is there a 'best practice' for this?