code: function put(key, value) {
    const entry = { key, value };
    // Note: No protection agains replacing, and thus orphan entries. By design.
    this._keymap[key] = entry;
    if (this.tail) {
      // link previous tail to the new tail (entry)
      this.tail.newer = entry;
      entry.older = this.tail;
    } else {
      // we're first in -- yay
      this.head = entry;
    }
    // add new entry to the end of the linked list -- it's now the freshest entry.
    this.tail = entry;
    if (this.size === this.limit) {
      // we hit the limit -- remove the head
      return this.shift();
    }
    // increase the size counter
    this.size += 1;
    return undefined;
  }
docs: Put <value> into the cache associated with <key>. Returns the entry which was
  removed to make room for the new entry. Otherwise undefined is returned
  (i.e. if there was enough room already).