()
| 635 | // Step 1: Start cascade — with retry on panel-state-not-found |
| 636 | let cascadeId; |
| 637 | const openCascade = async () => { |
| 638 | if (reuseEntry?.cascadeId) { |
| 639 | log.debug(`Cascade resumed: ${reuseEntry.cascadeId}`); |
| 640 | return reuseEntry.cascadeId; |
| 641 | } |
| 642 | const startProto = buildStartCascadeRequest(this.apiKey, sessionId); |
| 643 | const startResp = await grpcUnary( |
| 644 | this.port, this.csrfToken, `${LS_SERVICE}/StartCascade`, grpcFrame(startProto) |
| 645 | ); |
| 646 | const id = parseStartCascadeResponse(startResp); |
| 647 | if (!id) throw new Error('StartCascade returned empty cascade_id'); |
| 648 | log.debug(`Cascade started: ${id}`); |
| 649 | return id; |
| 650 | }; |
| 651 | try { |
| 652 | cascadeId = await openCascade(); |
| 653 | } catch (e) { |
nothing calls this directly
no test coverage detected