Allow for optional error argument to be passed to `fail` and `backoff`

This way errors can be logged/emitted without additional bookkeeping on
user's side.