Actually, I just thought about one more solution. You could open the object with using an access right of 0, meaning that anything is accepted, then check the access right manually. Still a bit of a kludge, but I think it is better than the brute force chaining.
Yeah, I'm not really happy with it the way it is either, thus the FIXME. For now, it works and demonstrates the problem with SignalObjectAndWait... I'm interested to hear Alexandre's opinion before trying to fix it myself.
Mike