destroy() {
            if (!this._destroyed) {
                delete this._conversionJobQueue;
                this._destroyed = true;

                // make sure this gets destroyed even if loaded=false
                if (this.loaded) {
                    this._destroySelfUnsafe(this._data, this._type);
                } else if (this._promise) {
                    const oldType = this._type;
                    this._promise.then(x => this._destroySelfUnsafe(x, oldType)).catch($.console.error);
                }
            }

        }
Free all the data and call data destructors if defined.