WeakMap & WeakSet

What pattern does this code implement using WeakMaps?
const keyStorage = new WeakMap();
const valueStorage = new WeakMap();

class BiMap {
  set(key, value) {
    keyStorage.set(value, key);
    valueStorage.set(key, value);
  }
  
  getByKey(key) {
    return valueStorage.get(key);
  }
  
  getByValue(value) {
    return keyStorage.get(value);
  }
}
Next Question (18/20)