UNPKG

@juzi/wechaty

Version:

Wechaty is a RPA SDK for Chatbot Makers.

39 lines 1.39 kB
import { Policy, } from 'cockatiel'; import { log, } from '@juzi/wechaty-puppet'; /** * Create a retry policy that'll try whatever function we execute 3 * times with a randomized exponential backoff. * * https://github.com/connor4312/cockatiel#policyretry */ const retryPolicy = getRetryPolicy(); function getRetryPolicy() { const policy = Policy .handleAll() .retry() .attempts(3) .exponential({ /** * ExponentialBackoff * https://github.com/connor4312/cockatiel#exponentialbackoff */ initialDelay: 1000, maxAttempts: 5, maxDelay: 10 * 1000, }); policy.onRetry(reason => log.silly('wechaty', 'retry-policy getRetryPolicy policy.onRetry() reason: "%s"', JSON.stringify(reason))); policy.onSuccess(({ duration }) => log.silly('wechaty', 'retry-policy getRetryPolicy policy.onSuccess(): retry call ran in %s ms', duration)); return policy; } const checkUntilChanged = async (gapMilliseconds, maxRetry, judgement) => { let changed = await judgement(); let currentTry = 1; while (!changed && (currentTry < maxRetry)) { await new Promise(resolve => setTimeout(resolve, gapMilliseconds)); changed = await judgement(); currentTry++; } return changed; }; export { retryPolicy, checkUntilChanged, }; //# sourceMappingURL=retry-policy.js.map