     {
         var expect = self.expectationWithDescription(__FUNCTION__)
         
-        Task<Float, String, NSError> { (progress, fulfill, reject, configure) in
+        Task<Float, String, 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) -> String in
+            
+            XCTAssertEqual(error!, "ERROR")
             XCTAssertFalse(isCancelled)
             
-            return "ERROR"
-            
-        }.then { (value: String) -> Void in
-            
-            XCTAssertEqual(value, "ERROR", "value should be derived from 2nd catching task.")
+            return "RECOVERY"
+            
+        }.then { (value: String) -> Void in
+            
+            XCTAssertEqual(value, "RECOVERY", "value should be derived from 2nd catching task.")
             
             expect.fulfill()
             

        var expect = self.expectationWithDescription(__FUNCTION__)
        var progressCount = 0
        
        Task<Float, String, NSError> { (progress, fulfill, reject, configure) in
            
            self.perform {
                progress(0.0)

    {
        var expect = self.expectationWithDescription(__FUNCTION__)
        
        Task<Float, String, ErrorString> { (progress, fulfill, reject, configure) in
            
            self.perform {
                reject("ERROR")
            }
            
        }.then { (value: String) -> Void in
            
            XCTFail("Should never reach here.")
                
        }.catch { (error: ErrorString?, isCancelled: Bool) -> Void in
            
            XCTAssertEqual(error!, "ERROR")
            XCTAssertFalse(isCancelled)
            
            expect.fulfill()
