_initialized should probably only be true iff the first read is done. So maybe this should return a Promise from a Task, like:

init: function() {
  return Task.spawn(function() {
    this._initializing = true;
    yield this.read();
    this._initialized = true;
  }.bind(this));
}