Hmm, Im pretty sure the provari uses an Attiny micro-controller (MCU). They probably hard coded a 50ms or so debounce time on the button. Sometimes this can cause the MCU to miss button presses. The button doesnt actually handle any current, it just sends a 1 or a zero to the MCU, which you look for in an "if" statement, ie:
if (provari_button == HIGH)
{
send the signal to the transistor to turn the power on.;
}
The problem is, switches are noisy, so when you press the button, its not just a clean ON or OFF it changes between the two rapidly until it settles down. So the trick, when you first see the button state change, ignore it for 50ms then come back and look again, if it is still in the same state, do what you wanted to do, if not ignore it until the loop comes back around.
Im actually wondering why they didn't use the interrupt pin... Unless they are and if that's the case, I have no Idea what your problem is. lol