CCDIKSolver strange behavior

Hi everyone!
I’m currently tinkering with CCDIKSolver and have noticed some strange behavior in some cases.
#1. Why does it change direction?

#2.Why can’t he change and continue moving in a circle?

At the moment I don’t have a limitation on angles (but there is a limitation on axes).

const iks = [
	{
		target: 6,
		effector: 5, 
		links: [
			{ 
				index: 4,
				limitation: new THREE.Vector3( 0, 1, 0 ), //limitation: new THREE.Vector3( 0, 1, 0 )
			},
			{ 
				index: 3,
				limitation: new THREE.Vector3( 0, 0, 1 ) ,
				//rotationMin: new THREE.Vector3(0,0,-THREE.MathUtils.degToRad (45)),
				//rotationMax: new THREE.Vector3(0,0,+THREE.MathUtils.degToRad (90)),
			},{ 
				index: 2 ,
				limitation: new THREE.Vector3( 0, 1, 0 ) 
			}, { 
				index: 1,
				limitation: new THREE.Vector3( 0, 1, 0 ),
			}
		],
	}
];

IKSolver = new CCDIKSolver(mesh, iks );

Sounds like gimbal lock, but could also be a bug?