code: function() {
      if (this.isDestroying) { return; }
  
      this.isDestroying = true;
  
      if (this.willDestroy) { this.willDestroy(); }
  
      set(this, 'isDestroyed', true);
      Ember.run.schedule('destroy', this, this._scheduledDestroy);
      return this;
    }
docs: Destroys an object by setting the isDestroyed flag and removing its
  metadata, which effectively destroys observers and bindings.
  
  If you try to set a property on a destroyed object, an exception will be
  raised.
  
  Note that destruction is scheduled for the end of the run loop and does not
  happen immediately.
  
  @returns {Ember.Object} receiver