UNPKG

@studyportals/sp-hs-misc

Version:

Miscellaneous code used in HouseStark's projects

37 lines 1.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResilientServiceLayerRequestsSenderDecorator = void 0; class ResilientServiceLayerRequestsSenderDecorator { serviceLayerRequestsSender; maximumRetries; delayTime = 500; constructor(serviceLayerRequestsSender, maximumRetries) { this.serviceLayerRequestsSender = serviceLayerRequestsSender; this.maximumRetries = maximumRetries; } async send(request) { return await this.execute(request); } async execute(request, executionCount = 0) { const executableRequest = Object.create(request); executionCount++; try { return await this.serviceLayerRequestsSender.send(executableRequest); } catch (e) { console.log(`Request Execution failed ${executionCount}x due to ${e}`); if (executionCount >= this.maximumRetries) { throw e; } await this.delay(this.delayTime); return await this.execute(request, executionCount); } } async delay(ms) { return await new Promise((resolve) => { setTimeout(resolve, ms); }); } } exports.ResilientServiceLayerRequestsSenderDecorator = ResilientServiceLayerRequestsSenderDecorator; //# sourceMappingURL=resilient-service-layer-requests-sender-decorator.class.js.map