Lua 5.3 Reference Manual| www.lua.org
The Object.defineProperty() static method defines a new property directly on an object, or modifies an existing property on an object, and returns the object.| MDN Web Docs
Classes are a template for creating objects. They encapsulate data with code to work on that data. Classes in JS are built on prototypes but also have some syntax and semantics that are unique to classes.| MDN Web Docs
The Set object lets you store unique values of any type, whether primitive values or object references.| MDN Web Docs
The Proxy object enables you to create a proxy for another object, which can intercept and redefine fundamental operations for that object.| MDN Web Docs
The Promise object represents the eventual completion (or failure) of an asynchronous operation and its resulting value.| MDN Web Docs