@studyportals/sp-hs-misc
Version:
Miscellaneous code used in HouseStark's projects
37 lines • 1.4 kB
JavaScript
;
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