@forge/events 0.6.1-next.0 → 0.7.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/out/__test__/invocationError.test.js +22 -7
- package/out/index.js +0 -2
- package/out/invocationError.d.ts.map +1 -1
- package/out/invocationError.js +4 -1
- package/out/retryOptions.d.ts +8 -5
- package/out/retryOptions.d.ts.map +1 -1
- package/out/retryOptions.js +6 -17
- package/package.json +2 -2
- package/src/__test__/invocationError.test.ts +24 -7
- package/src/invocationError.ts +5 -2
- package/src/retryOptions.ts +9 -21
- package/tsconfig.tsbuildinfo +4 -13
- package/out/__test__/retryOptions.test.d.ts +0 -2
- package/out/__test__/retryOptions.test.d.ts.map +0 -1
- package/out/__test__/retryOptions.test.js +0 -14
- package/src/__test__/retryOptions.test.ts +0 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @forge/events
|
|
2
2
|
|
|
3
|
+
## 0.7.0-next.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- e3af95e: Fix broken test for InvocationError
|
|
8
|
+
- d49508c: Fix broken test for InvocationError
|
|
9
|
+
- 6529a96: Add retryData into retryOptions
|
|
10
|
+
- 5062ab4: Fix broken test for InvocationError
|
|
11
|
+
|
|
12
|
+
## 0.6.1
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 0e0a7b4: Returning object from InvocationError to make it transferrable.
|
|
17
|
+
- Updated dependencies [b3ee297]
|
|
18
|
+
- @forge/api@2.7.0
|
|
19
|
+
|
|
20
|
+
## 0.6.1-next.1
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies [b3ee2973]
|
|
25
|
+
- @forge/api@2.7.0-next.0
|
|
26
|
+
|
|
3
27
|
## 0.6.1-next.0
|
|
4
28
|
|
|
5
29
|
### Patch Changes
|
|
@@ -1,21 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const retryOptions_1 = require("../retryOptions");
|
|
4
3
|
const invocationError_1 = require("../invocationError");
|
|
5
4
|
const invocationErrorCode_1 = require("../invocationErrorCode");
|
|
5
|
+
const retryOptions_1 = require("../retryOptions");
|
|
6
6
|
describe('InvocationError tests', () => {
|
|
7
|
-
const defaultRetryOption = new retryOptions_1.RetryOptions();
|
|
8
7
|
let target = new invocationError_1.InvocationError();
|
|
9
8
|
it('Populate invocationError with default retryOptions and expect default retry option', async () => {
|
|
10
|
-
expect(target.retryOptions.retryAfter).toEqual(
|
|
9
|
+
expect(target.retryOptions.retryAfter).toEqual(retryOptions_1.DEFAULT_RETRY_OPTIONS.retryAfter);
|
|
11
10
|
expect(target.retryOptions.retryReason).toEqual(invocationErrorCode_1.InvocationErrorCode.FUNCTION_RETRY_REQUEST);
|
|
12
11
|
expect(target.hasOwnProperty('_retry')).toBe(true);
|
|
13
12
|
});
|
|
14
13
|
it('Populate InvocationError with custom RetryOptions and expect the custom value to set.', () => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
const retryOptions = {
|
|
15
|
+
retryAfter: 10,
|
|
16
|
+
retryReason: invocationErrorCode_1.InvocationErrorCode.FUNCTION_OUT_OF_MEMORY,
|
|
17
|
+
retryData: {
|
|
18
|
+
eventsToSplit: 5
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
target = new invocationError_1.InvocationError(retryOptions);
|
|
22
|
+
expect(target.retryOptions).toEqual(retryOptions);
|
|
23
|
+
expect(target.hasOwnProperty('_retry')).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
it('Use MIN_RETRY_AFTER when retryAfter <= 0', () => {
|
|
26
|
+
const retryOptions = {
|
|
27
|
+
retryAfter: 0,
|
|
28
|
+
retryReason: invocationErrorCode_1.InvocationErrorCode.FUNCTION_OUT_OF_MEMORY,
|
|
29
|
+
retryData: 'some string data'
|
|
30
|
+
};
|
|
31
|
+
target = new invocationError_1.InvocationError(retryOptions);
|
|
32
|
+
expect(target.retryOptions.retryAfter).toEqual(retryOptions_1.MIN_RETRY_AFTER);
|
|
33
|
+
expect(target.retryOptions.retryData).toEqual('some string data');
|
|
19
34
|
expect(target.hasOwnProperty('_retry')).toBe(true);
|
|
20
35
|
});
|
|
21
36
|
});
|
package/out/index.js
CHANGED
|
@@ -21,5 +21,3 @@ var invocationError_1 = require("./invocationError");
|
|
|
21
21
|
Object.defineProperty(exports, "InvocationError", { enumerable: true, get: function () { return invocationError_1.InvocationError; } });
|
|
22
22
|
var invocationErrorCode_1 = require("./invocationErrorCode");
|
|
23
23
|
Object.defineProperty(exports, "InvocationErrorCode", { enumerable: true, get: function () { return invocationErrorCode_1.InvocationErrorCode; } });
|
|
24
|
-
var retryOptions_1 = require("./retryOptions");
|
|
25
|
-
Object.defineProperty(exports, "RetryOptions", { enumerable: true, get: function () { return retryOptions_1.RetryOptions; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocationError.d.ts","sourceRoot":"","sources":["../src/invocationError.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"invocationError.d.ts","sourceRoot":"","sources":["../src/invocationError.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,qBAAa,eAAgB,SAAQ,QAAQ;IACxB,YAAY,EAAE,YAAY;gBAA1B,YAAY,GAAE,YAAoC;IAW9D,MAAM,IAAI;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,YAAY,CAAA;KAAE;CAMjE"}
|
package/out/invocationError.js
CHANGED
|
@@ -4,9 +4,12 @@ exports.InvocationError = void 0;
|
|
|
4
4
|
const retryOptions_1 = require("./retryOptions");
|
|
5
5
|
const queueResponse_1 = require("./queueResponse");
|
|
6
6
|
class InvocationError extends queueResponse_1.Response {
|
|
7
|
-
constructor(retryOptions =
|
|
7
|
+
constructor(retryOptions = retryOptions_1.DEFAULT_RETRY_OPTIONS) {
|
|
8
8
|
super(true);
|
|
9
9
|
this.retryOptions = retryOptions;
|
|
10
|
+
if (this.retryOptions.retryAfter !== undefined && this.retryOptions.retryAfter <= 0) {
|
|
11
|
+
this.retryOptions.retryAfter = retryOptions_1.MIN_RETRY_AFTER;
|
|
12
|
+
}
|
|
10
13
|
return this.toJSON();
|
|
11
14
|
}
|
|
12
15
|
toJSON() {
|
package/out/retryOptions.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { InvocationErrorCode } from './invocationErrorCode';
|
|
2
|
-
export declare
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export declare const MIN_RETRY_AFTER = 1;
|
|
3
|
+
export declare const DEFAULT_RETRY_OPTIONS: {
|
|
4
|
+
retryAfter: number;
|
|
5
5
|
retryReason: InvocationErrorCode;
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
};
|
|
7
|
+
export interface RetryOptions {
|
|
8
|
+
retryAfter: number;
|
|
9
|
+
retryReason: InvocationErrorCode;
|
|
10
|
+
retryData?: any;
|
|
8
11
|
}
|
|
9
12
|
//# sourceMappingURL=retryOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryOptions.d.ts","sourceRoot":"","sources":["../src/retryOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,
|
|
1
|
+
{"version":3,"file":"retryOptions.d.ts","sourceRoot":"","sources":["../src/retryOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,mBAAmB,CAAC;IACjC,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB"}
|
package/out/retryOptions.js
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DEFAULT_RETRY_OPTIONS = exports.MIN_RETRY_AFTER = void 0;
|
|
4
4
|
const invocationErrorCode_1 = require("./invocationErrorCode");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
set retryAfter(valueInSeconds) {
|
|
11
|
-
if (valueInSeconds >= RetryOptions.MIN_RETRY_AFTER) {
|
|
12
|
-
this._retryAfter = valueInSeconds;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
get retryAfter() {
|
|
16
|
-
return this._retryAfter;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.RetryOptions = RetryOptions;
|
|
20
|
-
RetryOptions.MIN_RETRY_AFTER = 1;
|
|
5
|
+
exports.MIN_RETRY_AFTER = 1;
|
|
6
|
+
exports.DEFAULT_RETRY_OPTIONS = {
|
|
7
|
+
retryAfter: exports.MIN_RETRY_AFTER,
|
|
8
|
+
retryReason: invocationErrorCode_1.InvocationErrorCode.FUNCTION_RETRY_REQUEST
|
|
9
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/events",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0-next.0",
|
|
4
4
|
"description": "Forge Async Event methods",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@types/uuid": "^3.4.7"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@forge/api": "^2.
|
|
19
|
+
"@forge/api": "^2.7.0",
|
|
20
20
|
"uuid": "^3.4.0"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -1,23 +1,40 @@
|
|
|
1
|
-
import { RetryOptions } from '../retryOptions';
|
|
2
1
|
import { InvocationError } from '../invocationError';
|
|
3
2
|
import { InvocationErrorCode } from '../invocationErrorCode';
|
|
3
|
+
import { DEFAULT_RETRY_OPTIONS, MIN_RETRY_AFTER, RetryOptions } from '../retryOptions';
|
|
4
4
|
|
|
5
5
|
describe('InvocationError tests', () => {
|
|
6
|
-
const defaultRetryOption = new RetryOptions();
|
|
7
6
|
let target = new InvocationError();
|
|
8
7
|
|
|
9
8
|
it('Populate invocationError with default retryOptions and expect default retry option', async () => {
|
|
10
|
-
expect(target.retryOptions.retryAfter).toEqual(
|
|
9
|
+
expect(target.retryOptions.retryAfter).toEqual(DEFAULT_RETRY_OPTIONS.retryAfter);
|
|
11
10
|
expect(target.retryOptions.retryReason).toEqual(InvocationErrorCode.FUNCTION_RETRY_REQUEST);
|
|
12
11
|
expect((target as any).hasOwnProperty('_retry')).toBe(true);
|
|
13
12
|
});
|
|
14
13
|
|
|
15
14
|
it('Populate InvocationError with custom RetryOptions and expect the custom value to set.', () => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
const retryOptions: RetryOptions = {
|
|
16
|
+
retryAfter: 10,
|
|
17
|
+
retryReason: InvocationErrorCode.FUNCTION_OUT_OF_MEMORY,
|
|
18
|
+
retryData: {
|
|
19
|
+
eventsToSplit: 5
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
target = new InvocationError(retryOptions);
|
|
19
23
|
|
|
20
|
-
expect(target.retryOptions).toEqual(
|
|
24
|
+
expect(target.retryOptions).toEqual(retryOptions);
|
|
25
|
+
expect((target as any).hasOwnProperty('_retry')).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('Use MIN_RETRY_AFTER when retryAfter <= 0', () => {
|
|
29
|
+
const retryOptions: RetryOptions = {
|
|
30
|
+
retryAfter: 0,
|
|
31
|
+
retryReason: InvocationErrorCode.FUNCTION_OUT_OF_MEMORY,
|
|
32
|
+
retryData: 'some string data'
|
|
33
|
+
};
|
|
34
|
+
target = new InvocationError(retryOptions);
|
|
35
|
+
|
|
36
|
+
expect(target.retryOptions.retryAfter).toEqual(MIN_RETRY_AFTER);
|
|
37
|
+
expect(target.retryOptions.retryData).toEqual('some string data');
|
|
21
38
|
expect((target as any).hasOwnProperty('_retry')).toBe(true);
|
|
22
39
|
});
|
|
23
40
|
});
|
package/src/invocationError.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { RetryOptions } from './retryOptions';
|
|
1
|
+
import { DEFAULT_RETRY_OPTIONS, MIN_RETRY_AFTER, RetryOptions } from './retryOptions';
|
|
2
2
|
import { Response } from './queueResponse';
|
|
3
3
|
|
|
4
4
|
export class InvocationError extends Response {
|
|
5
|
-
constructor(public retryOptions: RetryOptions =
|
|
5
|
+
constructor(public retryOptions: RetryOptions = DEFAULT_RETRY_OPTIONS) {
|
|
6
6
|
super(true);
|
|
7
|
+
if (this.retryOptions.retryAfter !== undefined && this.retryOptions.retryAfter <= 0) {
|
|
8
|
+
this.retryOptions.retryAfter = MIN_RETRY_AFTER;
|
|
9
|
+
}
|
|
7
10
|
return (this.toJSON() as unknown) as InvocationError;
|
|
8
11
|
}
|
|
9
12
|
|
package/src/retryOptions.ts
CHANGED
|
@@ -1,26 +1,14 @@
|
|
|
1
1
|
import { InvocationErrorCode } from './invocationErrorCode';
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
static readonly MIN_RETRY_AFTER = 1;
|
|
3
|
+
export const MIN_RETRY_AFTER = 1;
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
export const DEFAULT_RETRY_OPTIONS = {
|
|
6
|
+
retryAfter: MIN_RETRY_AFTER,
|
|
7
|
+
retryReason: InvocationErrorCode.FUNCTION_RETRY_REQUEST
|
|
8
|
+
};
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* @param valueInSeconds new value in seconds
|
|
13
|
-
*/
|
|
14
|
-
set retryAfter(valueInSeconds: number) {
|
|
15
|
-
if (valueInSeconds >= RetryOptions.MIN_RETRY_AFTER) {
|
|
16
|
-
this._retryAfter = valueInSeconds;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Returns value of retryAfter to indicate seconds to wait before attempting a retry.
|
|
22
|
-
*/
|
|
23
|
-
get retryAfter(): number {
|
|
24
|
-
return this._retryAfter;
|
|
25
|
-
}
|
|
10
|
+
export interface RetryOptions {
|
|
11
|
+
retryAfter: number;
|
|
12
|
+
retryReason: InvocationErrorCode;
|
|
13
|
+
retryData?: any;
|
|
26
14
|
}
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -432,12 +432,12 @@
|
|
|
432
432
|
"affectsGlobalScope": false
|
|
433
433
|
},
|
|
434
434
|
"./src/retryOptions.ts": {
|
|
435
|
-
"version": "
|
|
436
|
-
"signature": "
|
|
435
|
+
"version": "01d4546f1cd03fe04db3e66de04d74f2951538c3118ff44db7a088c533f03ee2",
|
|
436
|
+
"signature": "0e928ac60deda4d06973e71ee68e6562231c8a646a9022beb87ce1e081c2a930",
|
|
437
437
|
"affectsGlobalScope": false
|
|
438
438
|
},
|
|
439
439
|
"./src/invocationError.ts": {
|
|
440
|
-
"version": "
|
|
440
|
+
"version": "7ac55847fd7c10a9cf3f95d58608a448d7e8cd034a0f0ab3a939f0bde8ec2347",
|
|
441
441
|
"signature": "d7309083ef29642d7470e78711fa421b98950f4015bef373dcbce9284d1c6643",
|
|
442
442
|
"affectsGlobalScope": false
|
|
443
443
|
},
|
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
"affectsGlobalScope": false
|
|
448
448
|
},
|
|
449
449
|
"./src/__test__/invocationError.test.ts": {
|
|
450
|
-
"version": "
|
|
450
|
+
"version": "096668440e76648563b9766369e205cd15640660b37ca4dfcb50947036e10087",
|
|
451
451
|
"signature": "2828661aedf167d345a46c084fd93db1749c61793ee4b7b627276a16c91f732f",
|
|
452
452
|
"affectsGlobalScope": false
|
|
453
453
|
},
|
|
@@ -471,11 +471,6 @@
|
|
|
471
471
|
"signature": "7bc819d10bb62166250f5efeffe176508b3d870807ac87f9fd987e3a552a9b64",
|
|
472
472
|
"affectsGlobalScope": false
|
|
473
473
|
},
|
|
474
|
-
"./src/__test__/retryOptions.test.ts": {
|
|
475
|
-
"version": "bbbaf4c9a1497332be34be622de1b1c1b6266393f822173fc05eff9ddf714352",
|
|
476
|
-
"signature": "c06fea4edbea8d8367d828cf8d04f164a1c2f8f45265d63be53e757266c0b3f7",
|
|
477
|
-
"affectsGlobalScope": false
|
|
478
|
-
},
|
|
479
474
|
"../../node_modules/jest-diff/build/cleanupSemantic.d.ts": {
|
|
480
475
|
"version": "d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322",
|
|
481
476
|
"signature": "d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322",
|
|
@@ -743,9 +738,6 @@
|
|
|
743
738
|
"./src/__test__/queueResponse.test.ts": [
|
|
744
739
|
"./src/queueResponse.ts"
|
|
745
740
|
],
|
|
746
|
-
"./src/__test__/retryOptions.test.ts": [
|
|
747
|
-
"./src/retryOptions.ts"
|
|
748
|
-
],
|
|
749
741
|
"./src/__test__/utils.ts": [
|
|
750
742
|
"./src/types.ts"
|
|
751
743
|
],
|
|
@@ -1098,7 +1090,6 @@
|
|
|
1098
1090
|
"./src/__test__/jobProgress.test.ts",
|
|
1099
1091
|
"./src/__test__/queue.test.ts",
|
|
1100
1092
|
"./src/__test__/queueResponse.test.ts",
|
|
1101
|
-
"./src/__test__/retryOptions.test.ts",
|
|
1102
1093
|
"./src/__test__/utils.ts",
|
|
1103
1094
|
"./src/errors.ts",
|
|
1104
1095
|
"./src/index.ts",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retryOptions.test.d.ts","sourceRoot":"","sources":["../../src/__test__/retryOptions.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const retryOptions_1 = require("../retryOptions");
|
|
4
|
-
describe('RetryOptions tests', () => {
|
|
5
|
-
const target = new retryOptions_1.RetryOptions();
|
|
6
|
-
it.each([
|
|
7
|
-
[retryOptions_1.RetryOptions.MIN_RETRY_AFTER, retryOptions_1.RetryOptions.MIN_RETRY_AFTER],
|
|
8
|
-
[retryOptions_1.RetryOptions.MIN_RETRY_AFTER - 1, retryOptions_1.RetryOptions.MIN_RETRY_AFTER],
|
|
9
|
-
[retryOptions_1.RetryOptions.MIN_RETRY_AFTER + 1, retryOptions_1.RetryOptions.MIN_RETRY_AFTER + 1]
|
|
10
|
-
])('try to set retryAfter to %p, expect retryAfter to be %p', (value, result) => {
|
|
11
|
-
target.retryAfter = value;
|
|
12
|
-
expect(target.retryAfter).toEqual(result);
|
|
13
|
-
});
|
|
14
|
-
});
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { RetryOptions } from '../retryOptions';
|
|
2
|
-
|
|
3
|
-
describe('RetryOptions tests', () => {
|
|
4
|
-
const target = new RetryOptions();
|
|
5
|
-
|
|
6
|
-
it.each([
|
|
7
|
-
[RetryOptions.MIN_RETRY_AFTER, RetryOptions.MIN_RETRY_AFTER],
|
|
8
|
-
[RetryOptions.MIN_RETRY_AFTER - 1, RetryOptions.MIN_RETRY_AFTER],
|
|
9
|
-
[RetryOptions.MIN_RETRY_AFTER + 1, RetryOptions.MIN_RETRY_AFTER + 1]
|
|
10
|
-
])('try to set retryAfter to %p, expect retryAfter to be %p', (value: number, result: number) => {
|
|
11
|
-
target.retryAfter = value;
|
|
12
|
-
expect(target.retryAfter).toEqual(result);
|
|
13
|
-
});
|
|
14
|
-
});
|