promise is the promise object, this property is being watched so will reset on change. And default to default if none is provided.
reset on 0 wont reset the button's finaly state, however when a number is entered it will reset to 'default' after said timeout is finished.
disable can be used to disabled the button (button also disables itself while loading, so need to do