#if !PMKCocoaPods import PromiseKit #endif import Bolts extension Promise { /** The provided closure is executed when this promise is resolved. */ public func then(on q: DispatchQueue? = conf.Q.map, body: @escaping (T) -> BFTask) -> Promise { return then(on: q) { tee -> Promise in let task = body(tee) return Promise { seal in task.continueWith(block: { task in if task.isCompleted { seal.fulfill(task.result) } else if let error = task.error { seal.reject(error) } else { seal.reject(PMKError.invalidCallingConvention) } return nil }) } } } }