process! (Capistrano::Transfer)

    # File lib/capistrano/transfer.rb, line 42
        def process!
          loop do
            begin
              break unless process_iteration { active? }
            rescue Exception => error
              if error.respond_to?(:session)
                handle_error(error)
              else
                raise
              end
            end
          end

          failed = transfers.select { |txfr| txfr[:failed] }
          if failed.any?
            hosts = failed.map { |txfr| txfr[:server] }
            errors = failed.map { |txfr| "#{txfr[:error]} (#{txfr[:error].message})" }.uniq.join(", ")
            error = TransferError.new("#{operation} via #{transport} failed on #{hosts.join(',')}: #{errors}")
            error.hosts = hosts

            logger.important(error.message) if logger
            raise error
          end

          logger.debug "#{transport} #{operation} complete" if logger
          self
        end