11.1. Decorating methods, the future way: In Chapter 6, Producing Functions – Higher-Order Functions, we wrote a decorator to enable logging for any function. Currently, method decorators are being considered for upcoming versions of JavaScript: refer to https://tc39.github.io/proposal-decorators/ for that (Draft 2 means that inclusion of this feature in the standard is likely, although there may be some additions or small changes). Study the following draft and take a look at what makes the next code tick:
const logging = (target, name, descriptor) => {
  const savedMethod = descriptor.value;
  descriptor.value = function(...args) {
    console.log(`entering ${name}: ${args}`);
    try {
      const valueToReturn = savedMethod.bind(this)(...args);
      console.log(`exiting ${name}: ${valueToReturn}`);
      return valueToReturn;
    } catch (thrownError...