UNPKG

@cfworker/cosmos

Version:

Azure Cosmos DB client for Cloudflare Workers and service workers

30 lines (29 loc) 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultRetryPolicy = exports.DefaultRetryPolicy = void 0; const session_js_1 = require("./session.js"); 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 ((0, session_js_1.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 }; } } exports.DefaultRetryPolicy = DefaultRetryPolicy; exports.defaultRetryPolicy = new DefaultRetryPolicy();