When we changed the disconnect check to use proper concurrent behavior (using CAS), the disconnecting flag wasn't set the first time we disconnect because the OR short-circited the CAS.
Upstream doesn't have this issue because they don't set the flag in the if statement (with CAS), and therefore aren't short circuted.
I have no idea why this check was an OR statement in the first place, so maybe this will cause more crazy bugs.