_removeSource(texture) {
        // find our reference el in our els array
        const el = this.elements.find((element) => element.texture.uuid === texture.uuid);

        // if we have an element, remove its associated event listeners
        if(el) {
            if(texture.sourceType === "image") {
                el.source.removeEventListener("load", el.load, false);
            }
            else if(texture.sourceType === "video") {
                // cancel video frame callback
                if(el.videoFrameCallback && texture._videoFrameCallbackID) {
                    el.source.cancelVideoFrameCallback(texture._videoFrameCallbackID);
                }

                el.source.removeEventListener("canplaythrough", el.load, false);
                // empty source to properly delete video element and free the memory
                el.source.pause();
                el.source.removeAttribute("src");
                el.source.load();
            }

            el.source.removeEventListener("error", el.error, false);
        }
    }
Cleanly removes a texture source by removing its associated event listeners

     params:
     @texture (Texture class object): The texture that contains our source
*