What you are seeing is called gimbal lock.
You’ll want to use Quaternions for the rotation to ameliorate this issue. Check out this example: https://threejs.org/examples/#webgl_math_orientation_transform
I believe this post can also shed some light on how to solve the issue with code for you to test: Animating Quaternion Rotation