Passes the button to the action

This removes the need to reach into the `_parentView` to find the
promise, and avoid naming it based on the action
I might be trying to find edge cases but what happens if the promise is set during an async action? This implementation expects a synchronous action. I think it would be better to observe for changes on the `promise` property and then handle the different states in that event handler rather than in the click event.