Cannot Destroy Instanitaed prefab.

Gents,

This is mind boggling to me, for whatever reason ( maybe a bug) I cannot destroy an instantiated object after being transferred from one GameObject Variable to Another.

void OnCreateHolder()
{		    

if (Holder != null)
			{
			if (Holder2 != null)
				{
					Destroy(Holder2.gameObject);
				}
			Holder2 = Holder.gameObject;
			}

Holder is an instantiated Object that if I try and destroy does not give me the error message. However I am assigning Holder to Holder2 without or without using the .gameobject tag it gives me the following error:

Destroying assets is not permitted to avoid data loss.
If you really want to remove an asset use DestroyImmediate (theObject, true);
UnityEngine.Object:Destroy(Object)

Please help, thank you.

If you really want to remove an asset use DestroyImmediate (theObject, true);

Destroy does not let go the object until after the frame