# File lib/taps/operation.rb, line 300
  def pull_data_from_table(stream, progress)
    loop do
      begin
        if exiting?
          store_session
          exit 0
        end

        size = stream.fetch_remote(session_resource['pull/table'], http_headers)
        break if stream.complete?
        progress.inc(size) unless exiting?
        stream.error = false
        self.stream_state = stream.to_hash
      rescue Taps::CorruptedData => e
        puts "Corrupted Data Received #{e.message}, retrying..."
        stream.error = true
        next
      end
    end

    progress.finish
    completed_tables << stream.table_name.to_s
    self.stream_state = {}
  end