GameObject not destroyed during the frame Destroy() is called before another method call?

Im remaking asteroids game ( in 3D ).

When i shoot a bullet, i check for a collision between the bullet and the asteroid hit. If the asteroid collides with the bullet projectile, the execution order is to first destroy the hit asteroid and then spawn the next 2 asteroids.

However, it seems as my bullet projectile doesn’t get destroyed during the frame that Destroy() is called, and still persists until the new asteroid spawn and they get destroyed too.

Can anyone please explain why this happens ?

//Check for collisions between objects
	void OnTriggerEnter(Collider col)
	{
		if(col.gameObject.tag == "Player" && !beenHit)
		{
			beenHit = true;
			PlayerLives.playerLives --;
			destroyShip = playerShip.GetComponent<RespawnShip>();
			destroyShip.DisablePlayerShip();
			SpawnNewAsteroid();
		}

		if(col.gameObject.tag == "Bullet_Projectile" && !beenHit)
		{
			beenHit = true;
			hitPoints --;
			Destroy(col.gameObject);

			if(hitPoints == 0)
			{
				SpawnNewAsteroid();
			}
			else
			{
				beenHit = false;
			}
		}
	}

	void SpawnNewAsteroid()
	{
		for(int i = 0; i < 2; i++)
		{
			GameObject newMedAsteroid = Instantiate(mediumAsteroid,transform.position,Quaternion.Euler(0,0,0)) as GameObject;
			newMedAsteroid.transform.Rotate(Vector3.forward * Random.Range(-90,90));
			newMedAsteroid.rigidbody.AddForce(newMedAsteroid.transform.up * breakOffForce,ForceMode.Impulse);
			newMedAsteroid.rigidbody.AddTorque(new Vector3(Random.Range(0,180),Random.Range(0,180),Random.Range(0,180)));

			assignToParent.AssignParent(newMedAsteroid,asteroidParentObject);

			
		}
		Destroy(gameObject);
	}

what about using DestroyImmidiate for your bullet. I believe it has an overhead but I doubt it’ll be so great it’ll affect anything in your game.

EDIT

As always test it but unless covering thousands of objects I think you’ll be OK. It’ll null out all references on the bullet so it’s just possible it’ll affect the game but if it does just report back and we’ll look at other options.

Disable your asteroid collider on first hit. It should then just be a mesh for the remaining of the frame.