IOS Swift 3 создает расширение URLSession для синхронного и асинхронного запроса

Привет всем, я собираюсь создать расширение для URLSession в swift 3 для создания синхронного и асинхронного запроса. Вот моя реализация

 extension URLSession { func sendSynchronousRequest(request: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) { let semaphore = DispatchSemaphore(value: 0) let task = self.dataTask(with: request) { (data, response, error) in completionHandler(data,response,error) semaphore.signal() } task.resume() semaphore.wait(timeout: .distantFuture) } func sendAsynchronousRequest(request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask { let task = self.dataTask(with: request) { data, response, error in completionHandler(data, response, error) } task.resume() return task } } 

У меня Xcode предлагает мне вставить @escaping в функцию. Не знаю, правильна ли реализация

У меня также есть предупреждение в этой строке введите описание изображения здесь

Кто-нибудь знает, как исправить расширение? Помощь очень ценится! благодаря!

Я нашел эту реализацию, но в swift1 / 2 не помню. Это не мое. Но я переписал его в swift3. Я просто не могу вспомнить, где я его нашел: /

 func synchronousDataTaskWithURL(url: URL) -> (Data?, URLResponse?, Error?) { var data: Data?, response: URLResponse?, error: Error? let semaphore = DispatchSemaphore(value: 0) dataTask(with: url) { data = $0; response = $1; error = $2 semaphore.signal() }.resume() semaphore.wait() return (data, response, error) }