Copy of mesh is not raycastable

I have this code that I am using to inherit from Mesh which will allow me to swap the geometry dynamically on a mesh (with a selfcontained class). The problem is that the instance this does not seems to be raycastable while the original is… I checked the documentation for the copy method and it does copy over the geometry, the object I am copying is also a mesh so I am quite confused as to what is misbehaving here.

Note that any other object in the scene works, it is just this copy that is not working (I’m using this same method at other locations and there it works, copying the geometry nd not having any issues)

export class BulbGlass extends Mesh{
  loadProgress: Subject<number> = new Subject();

  constructor(private configurator: ConfiguratorService, url: string) {
    super();

    this.configurator
      .loadModel(url, (p) => {
        this.loadProgress.next(p);
      })
      .subscribe((group) => {
        group.traverse((x) => {
          if (x instanceof Mesh) {
            console.log(x.copy);
            (this as Mesh).copy(x as Mesh);

            this.material = this.configurator.materialLibrary.get('glass')!;
            this.addOption('default', this.geometry);
          }
        });
      });

  addOption(id: string, geometry: BufferGeometry) {
    this.geometries.set(id, geometry);
  }

  replaceGeometry(meshID: string) {
    if (this.geometries.has(meshID)) {
      this.geometry = this.geometries.get(meshID)!;
    } else {
      console.warn(`${meshID} was not found on ${this.name}.`);
    }
  }
}
export class RaycastHandler extends THREE.Raycaster {
  mousePosition: Vector2 = new Vector2();

  constructor(private controller: Controller) {
    super();
    controller.renderer.domElement.addEventListener('mouseup', this.onMouseUp);
  }

  onMouseUp = (event: any) => {
    this.mousePosition.x = (event.clientX / window.innerWidth) * 2 - 1;
    this.mousePosition.y = -(event.clientY / window.innerHeight) * 2 + 1;

    this.camera = this.controller.camera;
    this.setFromCamera(this.mousePosition, this.controller.camera);
    const intersects = this.intersectObjects(
      this.controller.scene.children,
      true
    );

    if (intersects.length !== 0) console.log(intersects[0].object.name);
  };
}

This is a different class where I also use the copy method, and here it works…

export class Socket extends Mesh {
  loadProgress: Subject<number> = new Subject();

  constructor(private configurator: ConfiguratorService, url: string) {
    super();

    this.configurator
      .loadModel(url, (p) => {
        this.loadProgress.next(p);
      })
      .subscribe((group) => {
        group.traverse((x) => {
          (this as Mesh).copy(x as Mesh);
          this.material = this.setMaterial();
          this.configurator.controller.scene.add(this);
          this.rotateX(Math.PI / 2);
          this.rotateZ(Math.PI);
          this.position.add(new Vector3(0, 0.215, 0));
        });
      });
  }