var Nil = {} module.exports = cache // cache := (Continuable) => Continuable function cache(source) { var _err = Nil var _value = Nil var _result = null var listeners = null return function continuable(callback) { if (_err !== Nil || _value !== Nil) { callback(_err, _value) } else if (listeners) { listeners.push(callback) } else { listeners = [callback] _result = source(function (err, value) { _err = err _value = value listeners.forEach(function (l) { l(err, value) }) }) } return _result } }