earendil-works/pi · error · PiClientDisposedError
Pi client is disposed
Error message
Pi client is disposed
What it means
Error "Pi client is disposed" thrown in earendil-works/pi.
Source
Thrown at packages/client/src/client.ts:360
dispose(): Promise<void> {
if (this.#disposePromise) return this.#disposePromise;
this.#disposed = true;
this.#disposePromise = Promise.resolve();
const error = new PiClientDisposedError();
this.#rejectPendingRequests(error);
this.#connection.disconnect(error);
this.#state.dispose();
this.#invalidateAllSessionLeases();
this.#connectionStateListeners.clear();
return this.#disposePromise;
}
[Symbol.asyncDispose](): Promise<void> {
return this.dispose();
}
#assertNotDisposed(): void {
if (this.#disposed) throw new PiClientDisposedError();
}
async #reconcileSessionCleanup(sessionId: string): Promise<boolean> {
if (!this.#sessionCleanupRequired.has(sessionId)) return false;
let reconciliation = this.#sessionReconciliations.get(sessionId);
if (!reconciliation) {
reconciliation = this.#request({ command: "detach", sessionId })
.then(() => undefined)
.then(() => {
this.#sessionCleanupRequired.delete(sessionId);
})
.finally(() => {
this.#sessionReconciliations.delete(sessionId);
});
this.#sessionReconciliations.set(sessionId, reconciliation);
}
await reconciliation;
return true;View on GitHub (pinned to 4af9d21d3b)
Solutions
- Create a new PiClient; a disposed client cannot be used.
When it happens
Trigger: Thrown at packages/client/src/client.ts:360 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/d28d8cd2e629e940.
Report an issue: GitHub.