text: Title: reimplement multi-threaded downloads with async
  Body: there are a few places where we are using multithreading to download files, but looks like using asyncio is a [better option](https://www.velotio.com/engineering-blog/async-features-in-python). we'd first have to do a quick implementation and see how much benefit it brings to consider migrating 