         state = .resolved(.fulfilled(value))
     }
     
-    public init(error: ErrorProtocol) {
+    public init(error: Error) {
         state = .resolved(.rejected(error))
     }
     

        }
    }
    
    public func `catch`(_ closure: (error: ErrorProtocol) -> Void) {
        _ = then(fulfilment: nil, rejection: closure)
    }
    
    public func recover(_ closure: (error: ErrorProtocol) -> Promise) -> Promise {
        return Promise() { fulfill, reject in
            _ = then(
                fulfilment: { _ = fulfill(value: $0) }, // bubble up value

        }
    }
    
    public func then(fulfilment: ((value: T) -> Void)?, rejection: ((error: Error) -> Void)?) -> Promise {
        completion { resolution in
            switch resolution {
            case let .fulfilled(val): fulfilment?(value: val)
