docs: function (options) {
              if (this.synced) {
                  if (!this.__isNew) {
                      var self = this;
                      return this._checkTransaction(options, function () {
                          return self.__callHooks("remove", [options], function () {
                              return self._remove(options);
                          })
                              .chain(function () {
                                  self._clearPrimaryKeys();
                                  self.__isNew = true;
                                  if (self._static.emitOnRemove) {
                                      self.emit("remove", this);
                                      self._static.emit("remove", this);
                                  }
                              })
                              .chain(function () {
                                  return self;
                              });
                      });
                  } else {
                      return when(0);
                  }
              } else {
                  throw new ModelError("Model " + this.tableName + " has not been synced");
              }
          }