I am implementing download request from a remote source and i ran into the notion of @escaping function. As Apple says: 

> 
> A closure is said to escape a function when the closure is passed as
>  an argument to the function, but is called after the function returns.
> 
> 
> 

But I actually noticed (with the breakpoint tool) that it calls and implements before return statement. 

```
  static func fetchFeaturedApps(completionHandler: @escaping ([AppCategory]) -> ()) {
    let urlString = "https://api.letsbuildthatapp.com/appstore/featured"

    URLSession.shared.dataTask(with: URL(string: urlString)!) {
        (data, response,error) -> Void in

        if error != nil {
            print(error?.localizedDescription)
    return
        }
        do {
            let json = try(JSONSerialization.jsonObject(with: data!, options: .mutableContainers)) as! Dictionary<String, Any>
            var appCategories = [AppCategory]()
   // invokes before return [![enter image description here][1]][1]
            completionHandler(appCategories)

            for dict in json["categories"] as! [[String: Any]] {
                let appCategory = AppCategory()
                appCategory.setValuesForKeys(dict)
                appCategories.append(appCategory)
            }
            print(appCategories)
            DispatchQueue.main.async {
               // completionHandler(appCategories)
            }

        } catch let error as NSError {
            print(error.localizedDescription)
        }

    }.resume()

}

```

[![enter image description here](https://i.stack.imgur.com/akmxC.png)](https://i.stack.imgur.com/akmxC.png) Then[![enter image description here](https://i.stack.imgur.com/raZuC.png)](https://i.stack.imgur.com/raZuC.png) and of course after it deals with "completionHandler" it goes on implementing function further, as if i send it plain closure.[![enter image description here](https://i.stack.imgur.com/SQ8h5.png)](https://i.stack.imgur.com/SQ8h5.png) It turns out @escaping closure call before return statement, strictly in the place where I call it in function body. 

But I think maybe I am wrong? Maybe Apple keeps in mind another scenario? Please how do I need to understand @escaping notation with Apples quote about calling them after return? Actually in the example it calls before return , why?