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
That's fine if that's the case, we should update the readme. I expected it to just act like a button if there was no promise set in the action. If the action executes async code, wouldn't you expect it to use, say, a promise :wink: 

If we imply that no promise == regular button, we can *always* use the async button, instead of having to decide which buttons to use