I think that situation could only arise if there’s a raw pointer to the object somewhere, and both threads are hitting that pointer directly with increment/decrement calls. But you should never be using raw pointers to a ref counted object!
If you do things properly and always use ReferenceCountedObjectPtrs to refer to the object, then your example should be impossible, because I can’t imagine any way that two threads could both have pointers to an object whose ref count is only 1…
