The issue at hand involves the placement of the mesh's origin, which is not centered according to your duck images (great job on those!).
To resolve this, one solution is to adjust the Y-direction of the mesh's vertices so that the origin aligns with the center (refer to this explanation):
geometry.translate( distX, distY, distZ );
Alternatively, you can automatically reposition the origin of the mesh by using a bounding box to determine its center (eliminating the need to manually calculate the Y-axis translation):
// Define a bounding box:
var box = new THREE.Box3().setFromObject( mesh );
// Reset the mesh's position:
box.center(mesh.position);
mesh.position.multiplyScalar(-1);
Next, place the mesh within a pivot object:
var pivot = new THREE.Group();
scene.add(pivot);
pivot.add(mesh);
(Refer to this guide as well). With these adjustments, you should now be able to rotate your duck around the x-axis as needed.