You definitely need two separates states in your FiniteStateMachine:
enum EnemyState
{
.....
Dying,
Dead,
.......
};
The Logic to make sure you handle the switch to Dying status just once (even if the laser will be on screen few more seconds):
if (Is_There_Collision_Of_Laser_With_Enemy ())
if ((EnemyStatus !=Dying) && (EnemyStatus != Dead))
{
EnemyStatus = stDying;
Start_Dying_Animation (Time_Of_Current_Frame, Length_Of_Dying_Animation)
}
.....
Now you need to switch from Dying to Dead, when Dying animation is over in the place where you handle the states:
if (EnemyStatus == Dying)
{
if (Time_Of_Current_Frame >= Time_End_Of_Dying_Animation)
{
EnemyStatus = Dead;
}
}