(path)
| 365 | // share one /api/summary. Discarded when the render ends, so refresh refetches. |
| 366 | const inFlight = new Map(); |
| 367 | const request = (path) => { |
| 368 | if (!inFlight.has(path)) inFlight.set(path, api(path)); |
| 369 | return inFlight.get(path); |
| 370 | }; |
| 371 | |
| 372 | await Promise.allSettled(PANELS.map((panel) => drawPanel(panel, request(panel.source(query)), token))); |
| 373 |