function (...rest) {
      const _key = _hash(rest, opt.id);
      return cacheObj.get(opt, _key)
              .then(res => {
                if (typeof res == 'undefined' || res === null) {  
                  res = _update.bind(this)(opt, func, rest);
                }
                return res;
              });
    }
function (...rest) {
      const _key = _hash(rest, opt.id);
      return cacheObj.get(opt, _key)
              .then(res => {
                if (typeof res == 'undefined' || res === null) {  
                  res = _update.bind(this)(opt, func, rest);
                }
                return res;
              });
    }
function ( ... rest ) { const _key = _hash ( rest , opt . id ) ; return cacheObj . get ( opt , _key ) . then ( res => { if ( typeof res == 'undefined' || res === null ) { res = _update . bind ( this ) ( opt , func , rest ) ; } return res ; } ) ; }
for ES6 notation
for ES6 notation