This is an example on how to download textures using async/await.
I also provided a method which takes an action to use as a callback. You can use what method you prefer. I personally don't like the while(!isDone) Thread.Sleep(10) however when using an async Task, waiting is the point.
Since we are working with Textures (UnityObject) we cant handle them on a separate thread so we need a way back to the Unity main thread.