| 1234567891011121314151617181920212223242526272829 | 
							- var Nil = {}
 
- module.exports = cache
 
- // cache := (Continuable<T>) => Continuable<T>
 
- 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
 
-     }
 
- }
 
 
  |