     
     private var value: Result<T>?
     private var callbacks: [Result<T> -> Void] = []
-    private let lock = Lock()
+    private let mutex = Mutex()
     
     /// Automatically infer the type of the signal from the argument.
     public convenience init(_ value: T){

        if let value = value {
            f(value)
        }
        lock.sync {
            callbacks.append(f)
        }
        return self

        about the new value.
    */
    public func update(result: Result<T>) {
        mutex.lock {
            value = result
            callbacks.forEach{$0(result)}
        }
