detachEveryConnection uses doWhileSuspended now
doWhileSuspended does not set suspended to false at the end if it was set to false when the method began execution (it could be wrapped by some other doWhileSuspended call)