refactor: cleanup exponential delay code
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 25 Aug 2023 16:49:22 +0000 (18:49 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 25 Aug 2023 16:49:22 +0000 (18:49 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
.eslintrc.js
src/utils.ts

index e7cf2abcc1d1675b515422747866e702389b1779..a6ad5b1de281c8e671932bb02bb5542aef157684 100644 (file)
@@ -48,6 +48,7 @@ module.exports = defineConfig({
           'comparator',
           'cpu',
           'cpus',
+          'cryptographically',
           'ctx',
           'deprecations',
           'deque',
index b5fb9afeda348ddd15e9c441a3c23d67c07ffeb0..f1c0d923f2d3b15ed12ff06422996b0d5c13de19 100644 (file)
@@ -75,16 +75,16 @@ export const sleep = async (ms: number): Promise<void> => {
  * 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
 }