This was a big headache to me, I don't see really why unity bugs are so ridiculous, and miss guided for beginners
Ya as said by @Last_Imba and @emredesu it works when adding a one frame delay
previous code
gunCtrl.Shoot();
The Fix
IEnumerator ShootThread()
{
yield return new WaitForEndOfFrame();
gunCtrl.Shoot();
yield return null;
}
Posting this as it would help some beginners like me.