144457d801
The salvaged fix added a post-worker _interrupt_requested re-check to the main OpenAI/Anthropic streaming poll loop. The Bedrock Converse poll loop (interruptible_streaming_api_call, api_mode='bedrock_converse') has the same bug class: its worker calls stream_converse_with_callbacks(on_interrupt_check= ...), which breaks out of the event loop on interrupt and returns a PARTIAL response WITHOUT raising (bedrock_adapter.py). The worker sets result[ 'response'] and exits with _interrupt_requested still True, so the in-loop raise never fires and the poll loop returns the partial — silently swallowing /stop on Bedrock exactly as it was on the paths the salvaged commit fixed. Add the identical post-worker re-check before the Bedrock loop's return. The non-streaming loop (interruptible_api_call) is structurally immune: its worker's only early return fires off _request_cancelled, which is set by the main loop immediately before it raises in-loop, so no swallow window exists. Guard test flips _interrupt_requested True mid-stream (after the pre-flight check) and asserts InterruptedError is raised; verified RED without the fix (DID NOT RAISE) and GREEN with it.