def deliver(default = nil)
      # Design decision: the pre-prompt behavior
      # gets evaluated *once*, not every time the
      # user gets prompted. This prevents multiple
      # evaluations when bad options are provided.
      _eval_pre if @pre

      valid_option_chosen = false
      until valid_option_chosen
        response = messenger.prompt(@prompt_text, default)
        if validate(response)
          valid_option_chosen = true
          @answer = evaluate_behaviors(response)
          _eval_post if @post
        else
          messenger.error(@last_error_message)
        end
      end
    end
def deliver(default = nil)
      # Design decision: the pre-prompt behavior
      # gets evaluated *once*, not every time the
      # user gets prompted. This prevents multiple
      # evaluations when bad options are provided.
      _eval_pre if @pre

      valid_option_chosen = false
      until valid_option_chosen
        response = messenger.prompt(@prompt_text, default)
        if validate(response)
          valid_option_chosen = true
          @answer = evaluate_behaviors(response)
          _eval_post if @post
        else
          messenger.error(@last_error_message)
        end
      end
    end
Initializes a new Pref via passed-in parameters. Also
 initializes objects for each Validator and Behavior on
 this Pref.
 @param [Hash] params Parameters to initialize
 @return [void]
 Custom equality operator for this class.
 @param [Pref] other
 @return [Boolean]
 Delivers the prompt the user. Handles retries
 after incorrect answers, validation, behavior
 evaluation, and pre-/post-behaviors.
 @param [String] default The default option
 @return [void]