We dropped all occurrences of Tokio to avoid the cost of allocations induced by async runtimes. The only async part of the code is now S3 storage, which is just wrapped in a futures::executor::block_on()