in src/commands/repair-package-data.ts [130:151]
private awaitStateMachineEnd(SFN: SFNClient, executionArn: string): Promise<{readonly arn: string; readonly status: string}> {
return new Promise((ok, ko) => {
const command = new DescribeExecutionCommand({ executionArn });
(function evaluate() {
SFN.send(command).then(
result => {
if (result.status !== 'RUNNING') {
return ok({ arn: executionArn, status: result.status! });
}
// 30 seconds + up to 30 seconds jitter
setImmediate(evaluate, 30_000 + 30_000 * Math.random());
},
(cause) => {
if (cause.name !== 'ThrottlingException' && cause.name !== 'TimeoutError') {
return ko(cause);
}
setImmediate(evaluate, 30_000 + 30_000 * Math.random());
},
);
})();
});
}