import * as os from 'node:os'
+import * as crypto from 'node:crypto'
import type {
MeasurementStatisticsRequirements,
WorkerChoiceStrategyOptions
* Computes the retry delay in milliseconds using an exponential back off algorithm.
*
* @param retryNumber - The number of retries that have already been attempted
- * @param maxDelayRatio - The maximum ratio of the delay that can be randomized
+ * @param delayFactor - The base delay factor in milliseconds
* @returns Delay in milliseconds
* @internal
*/
export const exponentialDelay = (
retryNumber = 0,
- maxDelayRatio = 0.2
+ delayFactor = 100
): number => {
- const delay = Math.pow(2, retryNumber) * 100
- const randomSum = delay * maxDelayRatio * secureRandom() // 0-(maxDelayRatio*100)% of the delay
+ const delay = Math.pow(2, retryNumber) * delayFactor
+ const randomSum = delay * 0.2 * secureRandom() // 0-20% of the delay
return delay + randomSum
}
*
* @returns A number in the [0,1[ range
*/
-const secureRandom = (): number => {
+export const secureRandom = (): number => {
return crypto.getRandomValues(new Uint32Array(1))[0] / 0x100000000
}