     /// Add a callback.  If there's already a value, invoke it and return the resulting list of new callback functions.
     fileprivate func _addCallback(callback: @escaping () -> CallbackList) -> CallbackList {
         assert(eventLoop.inEventLoop)
-        switch value {
-        case .incomplete:
+        if value == nil {
             callbacks.append(callback: callback)
             return CallbackList()
-        default:
-            return callback()
-        }
+        }
+        return callback()
     }
     
     /// Add a callback.  If there's already a value, run as much of the chain as we can.

            precondition(!eventLoop.inEventLoop, "wait() must not be called when on the EventLoop")
        }
        
        var v: FutureValue <T> = .incomplete
        let lock = ConditionLock(value: 0)
        _whenComplete { () -> CallbackList in
            lock.lock()

        lock.lock(whenValue: 1)
        lock.unlock()
        
        switch(v!) {
        case .success(let result):
            return result
        case .failure(let error):
            throw error
        }
    }
}
