This recipe assumes that you already have a workspace that allows you to create and run ES modules in your browser. If you don't, refer to the first two chapters.
If you are unfamiliar with the WeakMap class, refer to the Setting and deleting entries from WeakMap recipe.