The streaming check was calling replyPlan.nextThreadTs() at setup time to determine if a thread_ts existed, which consumed the first reference before the deliver callback ran. Use incomingThreadTs/statusThreadTs directly for the streaming eligibility check instead.