     {
         var expect = self.expectationWithDescription(__FUNCTION__)
         
-        Task<Float, String, NSError> { (progress, fulfill, reject, configure) in
+        Task<Float, Void, ErrorString> { (progress, fulfill, reject, configure) in
             
             self.perform {
-                reject(NSError())
-            }
-            
-        }.catch { (error: NSError?, isCancelled: Bool) -> String in
-                
-            XCTAssertTrue(error != nil)
+                reject("ERROR")
+            }
+            
+        }.catch { (error: ErrorString?, isCancelled: Bool) -> Void in
+                
+            XCTAssertEqual(error!, "ERROR")
             XCTAssertFalse(isCancelled)
             
             expect.fulfill()
             
-            return "ERROR"
         }
         
         self.wait()

    {
        var expect = self.expectationWithDescription(__FUNCTION__)
        
        Task<Float, String, NSError> { (progress, fulfill, reject, configure) in
            
            self.perform {
                reject(NSError())
            }
        
        }.catch { (error: NSError?, isCancelled: Bool) -> String in
            
            XCTAssertTrue(error != nil)
            XCTAssertFalse(isCancelled)
            
            return "ERROR"
            
        }.then { (value: String) -> Void in
            
            XCTAssertEqual(value, "ERROR", "value should be derived from 2nd catching task.")
            
            expect.fulfill()
            

    {
        var expect = self.expectationWithDescription(__FUNCTION__)
        
        Task<Float, String, ErrorString> { (progress, fulfill, reject, configure) in
            
            self.perform {
                fulfill("OK")
            }
            
        }.then { (value: String) -> Task<Float, String, ErrorString> in
            
            XCTAssertEqual(value, "OK")
            
            return Task<Float, String, ErrorString> { (progress, fulfill, reject, configure) in
                
                self.perform {
                    fulfill("OK2")
