# File lib/god/task.rb, line 361
    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