diff --git a/.changeset/fix-schedule-retry-times-zero.md b/.changeset/fix-schedule-retry-times-zero.md new file mode 100644 index 00000000000..81df56d0ce8 --- /dev/null +++ b/.changeset/fix-schedule-retry-times-zero.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +Fix `Effect.retry` to respect `times: 0` option by using explicit undefined check instead of truthy check. diff --git a/packages/effect/src/internal/schedule.ts b/packages/effect/src/internal/schedule.ts index ef17ecfba4c..4c54b1d3d1e 100644 --- a/packages/effect/src/internal/schedule.ts +++ b/packages/effect/src/internal/schedule.ts @@ -2034,7 +2034,7 @@ export const fromRetryOptions = (options: Effect.Retry.Options): Schedule.S return scheduleDefectWrap(applied) }) : withWhile - return options.times ? + return options.times !== undefined ? intersect(withUntil, recurs(options.times)) : withUntil }