Thanks, yeah that does appear to be how it works - I think the audio stuff may be running in a separate thread, so I suppose it makes sense that my commands might get queued up and then executed later.
But even if this was the case, why does it know that the gameobject is destroyed BEFORE it executes my Stop command? Just seems strange.
I also tried the 'wait until next frame before destroying object' approach, and it did not work (same error). If I wait longer (like 0.1s), it did work, so that is what I'm doing right now (disabling the gameobject, stopping the sound, waiting 0.1s, then destroying). It feels pretty janky to do it that way, so I'm not super happy about it and would love for a cleaner way to do this.