# File lib/aws/sqs/queue.rb, line 251
      def poll(opts = {}, &block)
        poll_interval = opts[:poll_interval] || DEFAULT_POLL_INTERVAL
        opts[:limit] = opts.delete(:batch_size) if
          opts.key?(:batch_size)

        last_message_at = Time.now
        got_first = false
        loop do
          got_msg = false
          receive_messages(opts) do |message|
            got_msg = got_first = true
            last_message_at = Time.now
            yield(message)
          end
          unless got_msg
            Kernel.sleep(poll_interval) unless poll_interval == 0
            return if hit_timeout?(got_first, last_message_at, opts)
          end
        end
        nil
      end