Use nil for unlimited retries

Use `nil`, rather than `-1`, for unlimited retries. `limit` still defaults to `1` if not specified.
`options.fetch(:limit, 1)` will never return `nil`, so I don't think this will work. `options[:limit]` instead?