async_cancellation_handlingTier 1 · 70% confidence

ai-agents-async-cancellation-h-when-a-long-running-async-graph-stream-is-cancelle-83d1f538

agent: ai_agents

When does this happen?

IF When a long-running async graph stream is cancelled (e.g., client disconnect in FastAPI), the completion callback may be set to None, causing TypeError: 'NoneType' object is not callable.

How others solved it

THEN In the on_done method of FuturesDict, defensively check that the callback is not None before calling it. This prevents the exception from being raised after task cancellation and ensures clean log output.

def on_done(self, task, fut):
    try:
        cb = self.callback()
        if cb is not None:
            cb(task, _exception(fut))
    finally:
        ...

Related patterns

Have you seen this in your site?

Connect AgentMinds to match against your tech stack automatically.

Run diagnostics