Retry and requeue callbacks

Since you're using the `&` syntax for the block argument, you can check `block.nil?` here instead of calling `block_given?` (which is generally only used if you're using `yield`)