Particle System resets when unparenting

I have a particle system attached to an object. When I unparent the particle system in OnDestroy, all current particles disappear and then the system restarts. I noticed that if I have the particle system set to no play on awake then manually start it, it will stop playing altogether when I unparent it.

I simply want this particle system to persist when the parent is destroyed, then have the remaining particles disappear.

Here is the script I am using:

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Enemy))]
public class DamageParticleEffect : MonoBehaviour
{
	#region Fields
	public ParticleSystem particlePrefab;
	public Vector3 spawnPosition;
	[Range(0f, 1f)]
	public float activateHealth = 0.25f;
	public string sortingLayer = "Effects";
	public int sortingOrder = 0;

	private Enemy thisEnemy;
	private ParticleSystem particleInstance;
	#endregion

	#region Internal Properties
	private bool CanActivate
	{
		get
		{
			return particleInstance == null && 
				   thisEnemy != null &&
				   thisEnemy.HealthPercentage <= activateHealth;
		}
	}
	#endregion

	#region MonoBehaviour
	private void Awake()
	{
		thisEnemy = GetComponent<Enemy>();
	}

	private void Update()
	{
		if (CanActivate)
		{
			SpawnParticles();
		}
	}

	private void OnDestroy()
	{
		if (particleInstance != null)
		{
			particleInstance.transform.parent = null;
			particleInstance.enableEmission = false;
			Destroy(particleInstance.gameObject, particleInstance.startLifetime);
		}
	}

	private void OnDrawGizmosSelected()
	{
		Gizmos.color = Color.blue;
		Gizmos.DrawSphere(transform.TransformPoint(spawnPosition), 0.1f);
	}
	#endregion

	#region Internal Helper Methods
	private void SpawnParticles()
	{
		particleInstance = Instantiate(particlePrefab) as ParticleSystem;
		particleInstance.transform.parent = transform;
		particleInstance.transform.localPosition = spawnPosition;
		particleInstance.renderer.sortingLayerName = sortingLayer;
		particleInstance.renderer.sortingOrder = sortingOrder;
		particleInstance.Play();
	}
	#endregion
}

I figured out a solution.

Using OnDisable instead of OnDestroy prevents the particle system from resetting itself!

What worked for me was putting the object under an empty parent, then un-parenting that.