instead of using your death_timer to trigger the queue_free()
I would just connect the “animation_finished” signal from your AnimationPlayer Node (see below)
func _process(delta):
if health <= 0:
$AnimationPlayer.play("death")
func _on_AnimationPlayer_animation_finished(anim_name):
if anim_name == "death":
queue_free()