Ok, looks like I’ve got something here.
I’m using Audio::FAudioCaptureSynth CaptureSynth;
This gives access to StartCapturing() StopCapturing() AND AbortCapturing()
I found that just calling StopCapturing() during BeginDestroy wasn’t enough, and just calling AbortCapturing() did work, but CaptureSynth.IsCapturing() would continue to be true. So I tried calling StopCapturing() AND AbortCapturing() in succession and that seemed to handle terminating the thread and shutting down the active capture.
I haven’t gone into the code to see what’s going on further than that, but I no longer get any assert when closing the game and my logs output that IsCapturing() has ended during destroy.