Doesn't "Destroy" call work instantly?

Hi,

I have a script that I play an sfx and then destroy the object:

AudioSource.PlayClipAtPoint (PickupSFX, transform.position);
Destroy (gameObject);

but if I change order of them, I can still hear the sfx! I thought a Destroy() call would destroy the object instantly, but apparently it isn’t the case. Am I missing something?

Thanks.

Destroy documentation states that:

Actual object destruction is always
delayed until after the current Update
loop, but will always be done before rendering.

In simple words the object will be destroyed next frame.

If you want to destroy an object immediately then you use DestroyImmediate().