in lib/generator.js [815:838]
visitRuntimeBefore(ast, level) {
assert.equal(ast.type, 'object');
this.emit('$_runtime = ', level);
this.visitObject(ast, level);
this.emit(';\n');
this.emit('\n');
this.emit('$_retriesAttempted = 0;\n', level);
this.emit('$_lastRequest = null;\n', level);
this.emit('$_lastResponse = null;\n', level);
const retryContextName = this.getRealModelName(RETRY_CONTEXT);
this.emit(`$_context = new ${retryContextName}([\n`, level);
this.emit('\'retriesAttempted\' => $_retriesAttempted,\n', level + 1);
this.emit(']);\n', level);
this.emit('while (Dara::shouldRetry($_runtime[\'retryOptions\'], $_context)) {\n', level);
this.emit('if ($_retriesAttempted > 0) {\n', level + 1);
this.emit('$_backoffTime = Dara::getBackoffDelay($_runtime[\'retryOptions\'], $_context);\n', level + 2);
this.emit('if ($_backoffTime > 0) {\n', level + 2);
this.emit('Dara::sleep($_backoffTime);\n', level + 3);
this.emit('}\n', level + 2);
this.emit('}\n', level + 1);
this.emit('\n');
this.emit('$_retriesAttempted++;\n', level + 1);
this.emit('try {\n', level + 1);
}