             // potentially interrupt blocking code on run loop to let timeout code run
             CFRunLoopStop(runLoop)
             let now = DispatchTime.now() + forcefullyAbortTimeout
-            let didNotTimeOut = timedOutSem.wait(timeout: now) != .Success
-            let timeoutWasNotTriggered = semTimedOutOrBlocked.wait(timeout: .now()) == .Success
+            let didNotTimeOut = timedOutSem.wait(timeout: now) != .success
+            let timeoutWasNotTriggered = semTimedOutOrBlocked.wait(timeout: .now()) == .success
             if didNotTimeOut && timeoutWasNotTriggered {
                 if self.promise.resolveResult(.blockedRunLoop) {
                     CFRunLoopStop(CFRunLoopGetMain())

            semTimedOutOrBlocked.signal()
            let runLoop = CFRunLoopGetMain()
            CFRunLoopPerformBlock(runLoop, CFRunLoopMode.defaultMode.rawValue) {
                if semTimedOutOrBlocked.wait(timeout: .now()) == .Success {
                    timedOutSem.signal()
                    semTimedOutOrBlocked.signal()
                    if self.promise.resolveResult(.timedOut) {

    /// @returns a Bool that indicates if the async result was accepted or rejected because another
    ///          value was recieved first.
    func resolveResult(_ result: AwaitResult<T>) -> Bool {
        if signal.wait(timeout: .now()) == .success {
            self.asyncResult = result
            return true
        } else {
