code: function forEach(fun, context, desc) {
    let entry;
    /* eslint-disable no-param-reassign */
    if (context === true) {
      desc = true;
      context = undefined;
    } else if (typeof context !== 'object') {
      context = this;
    }
    /* eslint-enable */
    if (desc) {
      entry = this.tail;
      while (entry) {
        fun.call(context, entry.key, entry.value, this);
        entry = entry.older;
      }
    } else {
      entry = this.head;
      while (entry) {
        fun.call(context, entry.key, entry.value, this);
        entry = entry.newer;
      }
    }
  }
docs: Call `fun` for each entry. Starting with the newest entry if `desc` is a true
  value, otherwise starts with the oldest (head) enrty and moves towards the
  tail.
  
  `fun` is called with 3 arguments in the context `context`:
  `fun.call(context, Object key, Object value, LruCache self)`