func dispatch( qos: DispatchQoS.QoSClass = .default, completion: @escaping (Result) -> Void, block: @escaping () throws -> T ) { DispatchQueue.global(qos: qos).async { completion(Result { try block() }) } }