     
 }
 
-// MARK: -
+// MARK: - NonFailableTaskProtocol
+
+public protocol NonFailableTaskProtocol: ValueReportingTask {
+
+}
 
 extension NonFailableTaskProtocol {
     


import Foundation

public protocol TaskProtocol: class {
    func waitUntilFinished()
}

internal protocol InitializableTask: TaskProtocol {
    init(conditions: [TaskCondition]?, observers: [TaskObserver]?, asynchronous: Bool, closure: (Self) -> Void)
}

public protocol CancellableTask: TaskProtocol {
    var cancelled: Bool { get }

    
}

// 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 {
    
