docs: function subscribeToKeys(keys_to_watch_for_changes, callback) {
      if (!Array.isArray(keys_to_watch_for_changes)) {
        throw keys_to_watch_for_changes + ' must be an array';
      }
  
      // add keys that map to the store's keys
      var _iteratorNormalCompletion2 = true;
      var _didIteratorError2 = false;
      var _iteratorError2 = undefined;
  
      try {
        for (var _iterator2 = keys_to_watch_for_changes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
          var k = _step2.value;
  
          if (!store._store.hasOwnProperty(k)) {
            throw 'Store does not have key ' + k;
          }
          store._recordKeySubscriber(k, callback.name);
        }
  
        // call this function whenever the store changes
      } catch (err) {
        _didIteratorError2 = true;
        _iteratorError2 = err;
      } finally {
        try {
          if (!_iteratorNormalCompletion2 && _iterator2.return) {
            _iterator2.return();
          }
        } finally {
          if (_didIteratorError2) {
            throw _iteratorError2;
          }
        }
      }
  
      function _callback(changed_keys) {
        if (intersection(keys_to_watch_for_changes, changed_keys).length) {
          callback(changed_keys);
        }
      }
      return store.subscribe(_callback);
    }