function enhancePromiseForAureliaBinding(promise) { if (!promise || typeof promise.then != 'function') return; if (promise.hasOwnProperty('value')) return promise; const observableGetter = function() { return; // this is the default value of the unresolved promise } observableGetter.getObserver = function(promise) { return { subscribe: function(context, binding) { promise.then(value => binding.updateTarget(value)); } } } Object.defineProperty(promise, 'value', { get: observableGetter, enumerable: true, configurable: true }) return promise; } export function asyncBindings(definition) { if (definition) { definition.prototype.async = enhancePromiseForAureliaBinding; } }