code: def get_files(self, file_paths):
      
  
      results = []
  
      def get_file_thunk(path, interface):
        result = error = None 
  
        try:
          result = interface.get_file(path)
        except Exception as err:
          error = err
          # important to print immediately because 
          # errors are collected at the end
          print(err) 
        
        content, encoding = result
        content = compression.decompress(content, encoding)
  
        results.append({
          "filename": path,
          "content": content,
          "error": error,
        })
  
      for path in file_paths:
        if len(self._threads):
          self.put(partial(get_file_thunk, path))
        else:
          get_file_thunk(path, self._interface)
  
      desc = 'Downloading' if self.progress else None
      self.wait(desc)
  
      return results
docs: returns a list of files faster by using threads