UNPKG

@studyportals/sp-hs-misc

Version:

Miscellaneous code used in HouseStark's projects

50 lines 2.31 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResilientServiceLayerRequestsSenderDecorator = void 0; class ResilientServiceLayerRequestsSenderDecorator { constructor(serviceLayerRequestsSender, maximumRetries) { this.serviceLayerRequestsSender = serviceLayerRequestsSender; this.maximumRetries = maximumRetries; this.delayTime = 500; } send(request) { return __awaiter(this, void 0, void 0, function* () { return yield this.execute(request); }); } execute(request, executionCount = 0) { return __awaiter(this, void 0, void 0, function* () { const executableRequest = Object.create(request); executionCount++; try { return yield this.serviceLayerRequestsSender.send(executableRequest); } catch (e) { console.log(`Request Execution failed ${executionCount}x due to ${e}`); if (executionCount >= this.maximumRetries) { throw e; } yield this.delay(this.delayTime); return yield this.execute(request, executionCount); } }); } delay(ms) { return __awaiter(this, void 0, void 0, function* () { return yield new Promise((resolve) => { setTimeout(resolve, ms); }); }); } } exports.ResilientServiceLayerRequestsSenderDecorator = ResilientServiceLayerRequestsSenderDecorator; //# sourceMappingURL=resilient-service-layer-requests-sender-decorator.class.js.map