fix(identification): event listener memory leak

Use `once` instead of `on` and re-add listener if identification fails.