code: function Ractive$teardown () {
    	if ( this.torndown ) {
    		warnIfDebug( 'ractive.teardown() was called on a Ractive instance that was already torn down' );
    		return Promise$1.resolve();
    	}
  
    	this.torndown = true;
    	this.fragment.unbind();
    	this.viewmodel.teardown();
  
    	this._observers.forEach( cancel );
  
    	if ( this.fragment.rendered && this.el.__ractive_instances__ ) {
    		removeFromArray( this.el.__ractive_instances__, this );
    	}
  
    	this.shouldDestroy = true;
    	var promise = ( this.fragment.rendered ? this.unrender() : Promise$1.resolve() );
  
    	teardownHook$1.fire( this );
  
    	return promise;
    }
docs: Teardown. This goes through the root fragment and all its children, removing observers and generally cleaning up after itself