Okay here is a design idea for how we can accomplish this without the coupling here:

In `Account`...
```
function Account() {
  // ...
  this._onRemotesByAccount = this._onRemotesByAccount.bind(this);
  calendarStore.listeners.remotesByAccount.push(this._onRemotesByAccount);
}

Account.prototype._colorsUsedByAccount = {};

Account.prototype._onRemotesByAccount = function(accountId, calendars, callback) {
  calendarStore.all(function(err, results) {
    if (err) {
      return callback(err);
    }

    this._colorsUsedByAccount[accountId] = Object.keys(results).map(function(key) {
      return results[key].color;
    });

    return callback();
  }.bind(this));
};
```

In `Calendar.Store`...
```
function Store() {
  // ...
  this.listeners.remotesByAccount = [];
}

Store.prototype.remotesByAccount = function(accountId, trans, callback) {
  // ... Get results
  async.parallel(
    this.listeners.map(function(listener) {
      return function(done) {
        listener.call(null, results, done);
      };
    }, function(err) {
      if (err) {
        return callback(err);
      }

      return callback(null, results);
    });
};
```