Trigger the event.
Wait for the event to be triggered, then reset and return atomically
See Implementation