Should fail()/retry() need to be thrown?

Chew on it for a while. The benefit is that the stacktrace will
be more accurate, but if the 'throw' is missing unexpected things
will happen.