UNPKG

@cfworker/cosmos

Version:

Azure Cosmos DB client for Cloudflare Workers and service workers

26 lines (25 loc) 1.03 kB
import { readSessionNotAvailable } from './session.js'; export class DefaultRetryPolicy { maxAttempts; maxCumulativeWaitTimeMs; defaultRetryDelayMs; constructor(maxAttempts = 10, maxCumulativeWaitTimeMs = 30000, defaultRetryDelayMs = 5000) { this.maxAttempts = maxAttempts; this.maxCumulativeWaitTimeMs = maxCumulativeWaitTimeMs; this.defaultRetryDelayMs = defaultRetryDelayMs; } async shouldRetry(context) { if (readSessionNotAvailable(context.response)) { return { retry: true, delayMs: 0 }; } if (context.response.status !== 429 || context.attempts >= this.maxAttempts || context.cumulativeWaitMs >= this.maxCumulativeWaitTimeMs) { return { retry: false, delayMs: 0 }; } const delayMs = +(context.response.headers.get('x-ms-retry-after-ms') || this.defaultRetryDelayMs); return { retry: true, delayMs }; } } export const defaultRetryPolicy = new DefaultRetryPolicy();