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

        opts[:wait_time_seconds] = DEFAULT_WAIT_TIME_SECONDS unless
          opts.has_key?(:wait_time_seconds)

        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
            return if hit_timeout?(got_first, last_message_at, opts)
          end
        end
        nil
      end