 
 /*
  
- This is an easy way to load images asynchronously.
- However, production apps should probably use more
- sophisticated ways to do this, with cached images
- etc. Have a look at Kingfisher or any similar lib.
+ `async(from:)` is an easy way to load images asynchronously.
+ However, production apps should use more sophisticated ways
+ to do this, with cached images etc. Check out Kingfisher or
+ Alamofire...or any similar lib.
+ 
+ `async(named:)` draws images into a minimal rect and return
+ the images. This will cache the images and make them render
+ faster later on. This should only be used when you render a
+ large amount of small images at the same time. I did use it
+ in a keyboard extension with ~60 image buttons.
+ 
+ `async(named:)` uses the ~> operator, which can be found in
+ the `Threading` folder.
  
  */
 

            })
        }).resume()
    }
}


public extension UIImage {
    
    public static func async(from url: String, completion: @escaping AsyncImageResult) {
        guard let url = URL(string: url) else { return completion(nil, nil) }
        URLSession.shared.dataTask(with: url, completionHandler: { (data, response, error) in
            DispatchQueue.main.async(execute: {
