How to rotate mesh around its center at the same position when meshes are already moved by mesh.position.set and mesh.position.applyMatrix4

I have two box meshes made like this:

  var mesh1 = new THREE.Mesh( new THREE.BoxGeometry(1,1,1), new THREE.MeshStandardMaterial() );
  var mesh2 = mesh1.clone();
  mesh2.position.set(0,0,3);

  var matrixForRotY = new THREE.Matrix4().makeRotationY(Math.PI/180 * 30);
  mesh2.position.applyMatrix4(matrixForRotY);

How do I rotate mesh2 around its own center at the same position at (0, 0, 3)?
Right now when I try, it rotates around world origin.

I would appreciate it a lot if you could provide a simplified working example code.