     public func cancel() {
         guard case .waiting = state else { return }
         state = .cancelled
-        print(cancelHandlers.count)
         cancelHandlers => { $0() }
         successHandlers = []
         errorHandlers = []

    @discardableResult public func onResult(call handler: @escaping ResultHandler) -> Promise<T, E> {
        if let result = state.result {
            completionQueue >>> handler ** result
        } else {
            resultHandlers.append(handler)
        }
        return self

    @discardableResult public final func onSuccess(call handler: @escaping (T) -> ()) -> Promise<T, E> {
        if let result = state.value {
            completionQueue >>> handler ** result
        } else if case .waiting = state {
            successHandlers.append(handler)
        }
        return self
