def modify_stack_synchronously
      watch do |watcher|
        handling_cf_errors do
          yield
        end
        loop do
          watcher.each_new_event(&event_handler)
          status = self.status
          logger.debug("stack_status=#{status}")
          return status if status.nil? || status =~ /_(COMPLETE|FAILED)$/
          sleep(wait_poll_interval)
        end
      end
    end
def modify_stack_synchronously
      watch do |watcher|
        handling_cf_errors do
          yield
        end
        loop do
          watcher.each_new_event(&event_handler)
          status = self.status
          logger.debug("stack_status=#{status}")
          return status if status.nil? || status =~ /_(COMPLETE|FAILED)$/
          sleep(wait_poll_interval)
        end
      end
    end
Execute a block, reporting stack events, until the stack is stable.

 @return the final stack status