setScanTimeout(x) results in unstable mesh network

Good Afternoon.

I noticed that my mesh becomes unstable when I scan for beacons. I presume it is because im spending to much time in my scanBleBeacon() function. I found that this call setScanTimeout(50) is the cause. The biggest value I can use here for a stable mesh is setScanTimeout(8). Im worried that I may miss any beacon advertising packets.

Any suggestions or workarounds?

Im thinking running the scanBleBeacon() function on a timer every 1s instead of calling it continuously from my main loop. (again im worried I may miss a advertising packet)

Thanks in advance

Have been playing with this some more. setScanTimeout(10) still gives good mesh stability. but the BLE scan does not scan any incoming beacons. setScanTimeout(12) scan incomming BLE beacons but the mesh nodes disconnect continuously. I have 4 xenons. setScanTimeout(11) is unreliable on BLE and mesh communication.

I tried moving my BLEscan function to a timer that get called every 50ms or so. This stabilize the mesh but BLE does not work.

void scanBleBeacons(){
  BLE.setScanTimeout(10); // 1-10 good mesh no BLE 12 and higher good BLE but mesh disconnects
  int count = BLE.scan(scanResults, SCAN_RESULT_MAX);
  for (int ii = 0; ii < count; ii++) {
    size_t len = scanResults[ii].advertisingData.get(buf, BLE_MAX_ADV_DATA_LEN);//used to get an entire block of 31 bytes
    String Beacon_name = results[ii].advertisingData.deviceName();//check if the results have an name
    memcpy(buf_copy, buf, sizeof(buf));//make a copy
    //build  a string out of the MAC char array so we can compare to incoming
    sprintf (emMacCharToString, "em_MAC_%02x:%02x:%02x:%02x:%02x:%02x",
                                scanResults[ii].address[5],scanResults[ii].address[4],scanResults[ii].address[3],
                                scanResults[ii].address[2],scanResults[ii].address[1],scanResults[ii].address[0]);
    
    //make sure its a eddystone TLM beacon
    if((buf_copy[11] == 0x20)&&(buf_copy[12] == 0x00)&&(buf_copy[15] == 0x80)&&(buf_copy[16] == 0x00)){
     
    //ExtractBattVoltage();    
    
    }
    //if button LOAD button was pushed timer has started to enroll
    if (enrollBeacons == 1){
    //  StoreMacAddresses();
    }
  }//end of for 

}// end of scanBleBeacons