# File lib/god/task.rb, line 316
    def handle_poll(condition)
      # lookup metric
      metric = self.directory[condition]
      
      # run the test
      begin
        result = condition.test
      rescue Object => e
        cname = condition.class.to_s.split('::').last
        message = format("Unhandled exception in %s condition - (%s): %s\n%s",
                         cname, e.class, e.message, e.backtrace.join("\n"))
        applog(self, :error, message)
        result = false
      end
      
      # log
      messages = self.log_line(self, metric, condition, result)
      
      # notify
      if result && condition.notify
        self.notify(condition, messages.last)
      end
      
      # after-condition
      condition.after
      
      # get the destination
      dest = 
      if result && condition.transition
        # condition override
        condition.transition
      else
        # regular
        metric.destination && metric.destination[result]
      end
      
      # transition or reschedule
      if dest
        # transition
        begin
          self.move(dest)
        rescue EventRegistrationFailedError
          msg = self.name + ' Event registration failed, moving back to previous state'
          applog(self, :info, msg)
          
          dest = self.state
          retry
        end
      else
        # reschedule
        self.driver.schedule(condition)
      end
    end