vue + fastify · Hard · cache lifecycle
A browser and API disagree at the shared query lifecycle boundary. Several panels subscribe to the same query. The current cache aborts the shared request when any panel unmounts and commits a late response after the final subscriber has gone.
Task
Repair the shared browser-to-service contract. Reduce subscribe, unsubscribe, resolve and reject events into cache state with reference-counted ownership.