             usleep(1)
             OSMemoryBarrier()
           }
-          return semaphore_signal(semp) == KERN_SUCCESS
+          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)
-          block()
-          return true
+          return block()
         }
       }
     }
   }
 
-  func wait() -> Bool
+  func wait()
   {
     if OSAtomicDecrement32Barrier(&svalue) >= 0
     {
-      return true
+      return
     }
 
     waiters.enqueue(.Wait)

    {
      guard kr == KERN_ABORTED else { fatalError("Bad response (\(kr)) from semaphore_wait() in \(__FUNCTION__)") }
    }
    return true
  }

  func notify(block: () -> Void) -> Bool
  {
    if OSAtomicDecrement32Barrier(&svalue) >= 0
    {
      block()
      return true
    }

    waiters.enqueue(.Notify(block))
    return false
  }
}

  
  // MARK: Semaphore functionality

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

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