Skip to content

Commit a72b060

Browse files
committed
Add support for custom retry delays from onRetry callback
Allow onRetry callback to return a number to specify a custom delay for the next retry attempt. This enables implementing Retry-After header support and other dynamic retry delay strategies.
1 parent 429dba2 commit a72b060

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

src/promises.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export interface RetryOptions {
2323
attempt: number,
2424
error: unknown,
2525
delay: number,
26-
) => boolean | undefined
26+
) => boolean | number | undefined
2727
onRetryCancelOnFalse?: boolean
2828
onRetryRethrow?: boolean
2929
retries?: number
@@ -323,6 +323,10 @@ export async function pRetry<T>(
323323
if (result === false && onRetryCancelOnFalse) {
324324
break
325325
}
326+
// If onRetry returns a number, use it as the custom delay.
327+
if (typeof result === 'number' && result >= 0) {
328+
waitTime = Math.min(result, maxDelayMs as number)
329+
}
326330
} catch (e) {
327331
if (onRetryRethrow) {
328332
throw e

0 commit comments

Comments
 (0)