def value
result = nil
with_timing do
Timeout.timeout(limit) do
result = resolve_value
end
end
Facter::Util::Normalization.normalize(result)
rescue Timeout::Error => detail
Facter.log_exception(detail, "Timed out after #{limit} seconds while resolving #{qualified_name}")
return nil
rescue Facter::Util::Normalization::NormalizationError => detail
Facter.log_exception(detail, "Fact resolution #{qualified_name} resolved to an invalid value: #{detail.message}")
return nil
rescue => detail
Facter.log_exception(detail, "Could not retrieve #{qualified_name}: #{detail.message}")
return nil
end