     {
       guard kr == KERN_ABORTED else { fatalError("Bad response (\(kr)) from semaphore_wait() in \(__FUNCTION__)") }
     }
-    return true
+    return
   }
 
-  func notify(block: () -> Void) -> Bool
+  func notify(block: () -> Void)
   {
     if OSAtomicDecrement32Barrier(&svalue) >= 0
     {
-      block()
-      return true
+      return block()
     }
 
     waiters.enqueue(.Notify(block))
-    return false
   }
 }

  
  // MARK: Semaphore functionality

  func signal() -> Bool
  {
    switch OSAtomicIncrement32Barrier(&svalue)
    {
    case let v where v > 0:
      return false

    case Int32.min:
      fatalError("Semaphore signaled too many times")

            usleep(1)
            OSMemoryBarrier()
          }
          let kr = semaphore_signal(semp)
          precondition(kr == KERN_SUCCESS)
          return

        case .Notify(let block):
          // dispatch_async(dispatch_get_global_queue(qos_class_self(), 0), block)
          return block()
        }
      }
    }
  }

  func wait()
  {
    if OSAtomicDecrement32Barrier(&svalue) >= 0
    {
      return
    }

    waiters.enqueue(.Wait)
