         }
     }
     
+    /**
+     Completion block that is executed when the task reaches `Finished` state and 
+     `.Value` is passed to the `finish:` method. Completion block takes one 
+     argument `T`, which is `.Value` component from the task result.
+     
+     See `Result<T>`.
+     
+     Block should be set by using `onComplete:` method on `Self`.
+     
+     - Warning: Setting this property directly may result in unexpected behaviour.
+     Always use `onComplete:` method on `Self` to set the block.
+    */
     var onCompleteBlock: ((T) -> Void)? {
         get {
             return Dispatch.sync(queue) {

        }
    }
    
    public final func onComplete(completion: ((T) -> ())) -> Self {
        onCompleteBlock = completion
        return self
    }
    
    public final func onError(completion: ((ErrorType) -> ())) -> Self {
        onErrorBlock = completion
        return self
    }
    
    var state: State {
        get {
            return Dispatch.sync(queue) { return self.internalState }

        }
    }
    
    /**
     Changes task state to `Finished`
    */
    private final func moveToFinishedState() {
        state = .Finished
    }
