diff --git a/invokeai/frontend/web/src/services/api/run-graph.ts b/invokeai/frontend/web/src/services/api/run-graph.ts index 12b9dabfb7..892a7476a9 100644 --- a/invokeai/frontend/web/src/services/api/run-graph.ts +++ b/invokeai/frontend/web/src/services/api/run-graph.ts @@ -136,7 +136,7 @@ export const runGraph = (arg: RunGraphArg): Promise => { } if (signal !== undefined) { - signal.addEventListener('abort', () => { + const abortHandler = () => { if (isResolved) { return; } @@ -146,8 +146,12 @@ export const runGraph = (arg: RunGraphArg): Promise => { cancelQueueItem(queueItemId, store); } reject(new Error('Graph canceled')); + }; + + signal.addEventListener('abort', abortHandler); + cleanupFunctions.add(() => { + signal.removeEventListener('abort', abortHandler); }); - // TODO(psyche): Do we need to somehow clean up the signal? Not sure what is required here. } const onQueueItemStatusChanged = async (event: S['QueueItemStatusChangedEvent']) => {