Cesium datasourceKML bounded to a single map?

I have an app with 2 splitted map, a 3D and a 2D one.

At some point I load a KML from and external server, and do the following :

    loadKml(): Observable<Cesium.KmlDataSource> {
         this.dataService
            .getKmls()
            .pipe(
              map((data) => {
                const parser = new DOMParser();
                const xmlDoc = parser.parseFromString(data, "text/xml");
                const kml = new Cesium.KmlDataSource();
                kml.load(xmlDoc);
                return kml;
              })
            )
       }

Now, this is supposed to be just a KMLDataSource, stored somewhere in my app. I then, in both of my map, load this source.

...
 this.loadKml().subscribe((KMLDataSource) => 
    Cesium.when(this.viewer.dataSources.add(KMLDataSource))
 )
...

but this do no work, it load the KML in a single map only. and the second one even tho it add something, never display it.

If instead of doing this, I return the kml xml, and create 2 separated datasource, it works

    loadKml(): Observable<Cesium.KmlDataSource> {
         this.dataService
            .getKmls()
            .pipe(
              map((data) => {
                const parser = new DOMParser();
                return parser.parseFromString(data, "text/xml");
              })
            )
       }

 this.loadKml().subscribe((xml) => {
    const kml = new Cesium.KmlDataSource();
    kml.load(model.getData());
    Cesium.when(this.viewer.dataSources.add(xml))
})

Now, I know that the options for KMLDatasource are viewer.camera and viewer.canvas, so it does sound like it’s bounded to a map, but I am a bit confused on why. KMLDataSource just sound like it’s a datasource of kml, and should not be related to a camera/canvas/map in particular. Why is this the case ?

I would take a look at the KMLDataSource class: https://github.com/CesiumGS/cesium/blob/1.72/Source/DataSources/KmlDataSource.js#L3392. It may be just a matter of something like the “loading” promise only fires once, so you can’t add the same data source twice (whether to the same map or a different map), or it may be something more fundamental like the KMLDataSource instance acts as a manager of the entities created, so there must be a second instance created for it if you’re adding it again.