I changed the order of function calls to resolve the screen scoring bug, no timer.
func _on_body_entered(body):
body.take_damage() #here comes the bug
die()
func _on_body_entered(body):
die() # first, call this and emit an update score
body.take_damage() # second, player take damage