Issue #13502: threading: Fix a race condition in Event.wait() that made it
return False when the event was set and cleared right after.
diff --git a/Lib/threading.py b/Lib/threading.py
index 043e6c8..fe92f10 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -418,9 +418,10 @@
     def wait(self, timeout=None):
         self._cond.acquire()
         try:
-            if not self._flag:
-                self._cond.wait(timeout)
-            return self._flag
+            signaled = self._flag
+            if not signaled:
+                signaled = self._cond.wait(timeout)
+            return signaled
         finally:
             self._cond.release()