Promise-based uploads
Do not memoize `isAvailableOnS3` for complexity reasons