title: Is there a way to throw errors from asynchronous closures in Swift 3?
body: <p>I’m executing some functions in a test asynchronously using a <code>DispatchQueue</code> like this:</p>
  
  <pre><code>let queue: DispatchQueue = DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated)
  let group: DispatchGroup = DispatchGroup()
  
  func execute(argument: someArg) throws {
    group.enter()
    queue.async {
      do {
        // Do stuff here 
        group.leave()
      } catch {
         Log.info(“Something went wrong")
      }
    }
    group.wait()
  }
  </code></pre>
  
  <p>Sometimes the code inside the <code>do</code> block can throw errors, that I have to catch later on. Since I’m developing a test, I want it to fail, if the code inside the <code>do</code> block throws an error.
  Is there a way to throw an error, without catching it inside the <code>queue.async</code> call?</p>