This is likely due to the bullets being added as a child of the enemy. Using queue_free will destroy all the children of the node too.
Suggestion 1 :
The option I use, is having a Node in the scene tree specifically for bullets. Add the bullet to this node, instead of the enemy node. That way, when the enemy dies, their bullets live on.
Suggestion 2 :
Toggle the visibility and collision of the enemy for as long as they have bullets. Once all bullets are gone, then use queue_free