d56c77b368
Found reviewing CB-582 before the merge, not by the implementer. ask() clears its question on three paths — no-waiter, timed out, and (from answer()) answered. It can also leave by throwing: an interrupt while blocked on the answer, or an ExecutionException from the answer future. Those run only the finally block, which tore down the rendezvous turn but not the push loop's copy. The result was a question that stayed pending for good: named in every nudge until it hit its own cap, then left in pendingQuestions with no remover at all. Teardown now happens where the rendezvous teardown already happens, so the two cannot drift apart again. Closing a turnId that was never pending is a no-op, so the normal paths are unaffected. The new test fails on the pre-fix code with expected: <STOP> but was: <INJECT>.