def handle_event(condition)
      # Lookup metric.
      metric = self.directory[condition]

      # Log.
      messages = self.log_line(self, metric, condition, true)

      # Notify.
      if condition.notify
        self.notify(condition, messages.last)
      end

      # Get the destination.
      dest =
      if condition.transition
        # Condition override.
        condition.transition
      else
        # Regular.
        metric.destination && metric.destination[true]
      end

      if dest
        self.move(dest)
      end
    end
def handle_event(condition)
      # Lookup metric.
      metric = self.directory[condition]

      # Log.
      messages = self.log_line(self, metric, condition, true)

      # Notify.
      if condition.notify
        self.notify(condition, messages.last)
      end

      # Get the destination.
      dest =
      if condition.transition
        # Condition override.
        condition.transition
      else
        # Regular.
        metric.destination && metric.destination[true]
      end

      if dest
        self.move(dest)
      end
    end
Asynchronously evaluate and handle the given event condition. Handles
 logging notifications, and moving to the new state if necessary.

 condition - The Condition to handle.

 Returns nothing.