         do {
             try successHandler?(object)
             status = .success
+            completionHandler?()
             return
         } catch {
             self.catch(error)
         }
-        
-        completionHandler?()
     }
     
     /// Fullfill the promise with a failed result.

                promise.succeed(with: transformed)
            }).failure({ result in
                promise.fail(with: result)
            }).start()
        }
    }
    
    public func transformFailure<U>(_ callback: @escaping (E) throws -> U) -> Promise<T, U> {
        return Promise<T, U>() { promise in
            self.success({ result in
                promise.succeed(with: result)
            }).failure({ result in
                let transformed = try callback(result)
                promise.fail(with: transformed)
            }).start()
        }
    }

        do {
            try failureHandler?(object)
            status = .failure
            completionHandler?()
            return
        } catch {
            self.catch(error)
        }
    }
    
    /// Fullfill the promise with a failed result.
