Skip to content

retry()

Automatically retry failed operations with configurable strategies.

Syntax

typescript
task.retry(times: number, options?: {
  delay?: number;
  backoff?: number;
  shouldRetry?: (error: any, attempt: number) => boolean | Promise<boolean>;
}): FuturableTask<T>

Parameters

times

Maximum number of retry attempts.

options (optional)

  • delay: Milliseconds to wait between retries (default: 0)
  • backoff: Multiplier for exponential backoff (default: 1)
  • shouldRetry: Function to determine if retry should happen

Return Value

A new FuturableTask<T> with retry logic.

Examples

Basic Retry

typescript
const task = FuturableTask
  .fetch('/api/data')
  .retry(3); // Retry up to 3 times

Fixed Delay

typescript
const task = FuturableTask
  .of(() => unreliableOperation())
  .retry(5, { delay: 1000 }); // Wait 1s between retries

Exponential Backoff

typescript
const task = FuturableTask
  .fetch('/api/data')
  .retry(5, {
    delay: 1000,
    backoff: 2
  });
// Delays: 1s, 2s, 4s, 8s, 16s

Conditional Retry

typescript
const task = FuturableTask
  .fetch('/api/data')
  .retry(3, {
    shouldRetry: (error) => {
      // Only retry on network errors
      return error.name === 'NetworkError';
    }
  });

With Logging

typescript
const task = FuturableTask
  .of(() => apiCall())
  .retry(3, {
    delay: 1000,
    shouldRetry: (error, attempt) => {
      console.log(`Attempt ${attempt} failed:`, error);
      return attempt < 3;
    }
  });

See Also

Released under the MIT License.