     
     func cancel()
 }
-
-public protocol ValueReportingTask: TaskProtocol {
-    associatedtype ValueType
-    
-    var value: Self.ValueType! { get }
-    func finish(with value: Self.ValueType)
-}
-
-public protocol ErrorReportingTask: TaskProtocol {
-    var error: ErrorType? { get }
-    func finish(with error: ErrorType)
-}
-
-public protocol FailableTaskProtocol: CancellableTask, ValueReportingTask, ErrorReportingTask {
-    func finish(with value: Self.ValueType!, or error: ErrorType?)
-}
-
-public protocol NonFailableTaskProtocol: ValueReportingTask {
-
-}
-
-// MARK: -
 
 extension CancellableTask {
     

        
        return self
    }

}

// MARK: -

extension ValueReportingTask where Self.ValueType == Void {
    

    
}

// MARK: - ErrorReportingTask

public protocol ErrorReportingTask: TaskProtocol {
    var error: ErrorType? { get }
    func finish(with error: ErrorType)
}

// MARK: - FailableTaskProtocol

public protocol FailableTaskProtocol: CancellableTask, ValueReportingTask, ErrorReportingTask {
    func finish(with value: Self.ValueType!, or error: ErrorType?)
}

extension FailableTaskProtocol {
    
