class Aws::S3::MultipartFileUploader

def upload_parts(upload_id, source, options)

def upload_parts(upload_id, source, options)
  pending = PartList.new(compute_parts(upload_id, source, options))
  completed = PartList.new
  errors = upload_in_threads(pending, completed, options)
  if errors.empty?
    completed.to_a.sort_by { |part| part[:part_number] }
  else
    abort_upload(upload_id, options, errors)
  end
end