'use strict'; const promiseTry = require("es6-promise-try"); function evaluateValue(value) { if (typeof value === "function") { return value(); } else { return value; } } function defaultValue(value, fallbackValue) { value = evaluateValue(value); if (value != null) { return value; } else { return evaluateValue(fallbackValue); } } defaultValue.async = function defaultAsyncValue(value, fallbackValue) { return promiseTry(() => { return evaluateValue(value); }).then((resultValue) => { if (resultValue != null) { return resultValue; } else { return evaluateValue(fallbackValue); } }) } module.exports = defaultValue;