Есть код:
function slow(x) {
  // здесь могут быть ресурсоёмкие вычисления
  alert(`Called with ${x}`);
  return x;
}
function cachingDecorator(func) {
  let cache = new Map();
  return function(x) {
    if (cache.has(x)) {    // если кеш содержит такой x,
      return cache.get(x); // читаем из него результат
    }
    let result = func(x); // иначе, вызываем функцию
    cache.set(x, result); // и кешируем (запоминаем) результат
    return result;
  };
}
slow = cachingDecorator(slow);
alert( slow(1) ); // slow(1) кешируем
alert( "Again: " + slow(1) ); // возвращаем из кеша
alert( slow(2) ); // slow(2) кешируем
alert( "Again: " + slow(2) ); // возвращаем из кеша
На этой строчке 
cache.set(x, result);в кеш он записывает 
result равный 
{ alert(`Called with ${x}`); return x; }
Но почему 
alert( "Again: " + slow(1) ); возвращает с качестве значения 
slow(1) цифру 
1(т.е. x), без 
alert(`Called with ${x}`);?
Ведь в кеш записывается весь 
resultравный телу функции 
slow(x), т.е. это 
{
   alert(`Called with ${x}`);
  return x;
}
Помогите, пожалуйста понять.