docs: function Cache (opts) {
    opts = opts || {}
    opts = typeof opts === 'number' ? { maxLen: opts } : opts
    this.maxLen = opts.maxLen || Infinity
    this.defaultTTL = opts.defaultTTL
    this.onDelete = opts.onDelete || function () {}
    try {
      this._cache = new Map()
    } catch (e) {
      this._cache = new FakeMap()
    }
    this.len = 0
    // keeping track of double linked list
    this.head = null
    this.tail = null
  }