UNPKG

@shanyue/promise-utils

Version:

Userful promise utils, include map, filter, retry and sleep

55 lines 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const mocha_1 = require("mocha"); const chai_1 = require("chai"); const index_1 = require("../index"); mocha_1.describe('Promise.retry', function () { this.timeout(20000); mocha_1.it('expect work', async () => { let i = 0; const result = 100; const data = await index_1.retry(async (attemptNumber) => { i++; return attemptNumber === 3 ? result : Promise.reject(new Error('error')); }, { times: 3 }); chai_1.expect(data).to.eq(100); chai_1.expect(i).to.eq(3); }); mocha_1.it('abort', async () => { let i = 0; const err = new index_1.AbortError('hello'); try { await index_1.retry(async () => { i++; return Promise.reject(err); }, { times: 3 }); } catch (e) { chai_1.expect(e).to.equal(err); } chai_1.expect(i).to.eq(1); }); mocha_1.it('onFailedAttempt can return a promise to add a delay', async () => { const waitFor = 1000; const start = Date.now(); const result = 100; let isCalled; await index_1.retry(async () => { if (isCalled) { return result; } isCalled = true; throw new Error('error'); }, { onFailedAttempt: async () => { await index_1.sleep(waitFor); } }); chai_1.expect(Date.now()).to.gt(start + waitFor); }); }); //# sourceMappingURL=retry.js.map