@studyportals/sp-hs-misc
Version:
Miscellaneous code used in HouseStark's projects
32 lines • 1.18 kB
JavaScript
class ResilientServiceLayerRequestsSenderDecorator {
constructor(serviceLayerRequestsSender, maximumRetries) {
this.serviceLayerRequestsSender = serviceLayerRequestsSender;
this.maximumRetries = maximumRetries;
this.delayTime = 500;
}
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);
});
}
}
export { ResilientServiceLayerRequestsSenderDecorator };
//# sourceMappingURL=resilient-service-layer-requests-sender-decorator.class.js.map