code: function(updater) {
                      if (!onchanged) {
                          onchanged = function(ev) {
                              if (compute.bound && (ev.batchNum === undefined || ev.batchNum !== batchNum)) {
                                  // Get the new value
                                  var reads = can.__clearReading();
                                  var newValue = func.call(context);
                                  can.__setReading(reads);
                                  // Call the updater with old and new values
                                  updater(newValue, oldValue, ev.batchNum);
                                  oldValue = newValue;
                                  batchNum = batchNum = ev.batchNum;
                              }
                          };
                      }
  
                      readInfo = getValueAndBind(func, context, {}, onchanged);
                      oldValue = readInfo.value;
  
                      setCachedValue(readInfo.value);
  
                      compute.hasDependencies = !can.isEmptyObject(readInfo.observed);
                  }
docs: Set up handler for when the compute changes