error_handling

Allows an optional `error_hander` lambda to be passed to each `step`