mutex waitForKey was firing twice if the timeout happened to be the cause of retry instead of the 'free' event