def get_variant(identifier, override = nil)
      # identifier object to handle finding and caching the
      # experiment
      identifier = GxApi::ExperimentIdentifier.new(identifier)

      Celluloid::Future.new do
        # allows us to override and get back a variant
        # easily that conforms to the api
        if override.nil?
          self.get_variant_value(identifier)
        else
          Ostruct.new(self.default_values.merge(name: override))
        end
      end
    end
def get_variant(identifier, override = nil)
      # identifier object to handle finding and caching the
      # experiment
      identifier = GxApi::ExperimentIdentifier.new(identifier)

      Celluloid::Future.new do
        # allows us to override and get back a variant
        # easily that conforms to the api
        if override.nil?
          self.get_variant_value(identifier)
        else
          Ostruct.new(self.default_values.merge(name: override))
        end
      end
    end
return a variant value by name or id

 @param identifier [String, Hash] The name of the experiment or a hash
 with the id of the experiment
 @param override [String] Override value returned from the experiment

 @example
   variant = @gxapi.get_variant("my_experiment")
   variant.value =>
     # Ostruct.new(experiment_id: "x", index: 1, name: "name")

 @example
   variant = @gxapi.get_variant(id: "x")
   variant.value =>
     # Ostruct.new(experiment_id: "x", index: 1, name: "name")

 @return [Celluloid::Future]