The Proxy object is used to define custom behavior for fundamental operations (e.g. property lookup, assignment, enumeration, function invocation, etc). MDN
Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value. MDN
In its simplest form, a decorator is simply a way of wrapping one piece of code with another — literally “decorating” it.