Use nil for unlimited retries

Use `nil`, rather than `-1`, for unlimited retries. `limit` still defaults to `1` if not specified.