Pitch/Heading Setting Not Being Persisted in lookAt


I'm seeing something other than what I expect when performing a lookAt/lookAtTransform call.

Essentially I want a user to be able to set a pitch and heading and zoom into a certain distance/range using mouse controls. Then, some external event happens, and what I want to achieve is to use the same pitch/heading/range currently set on the camera and just "lookAt" a new location. Some sample code below is:

// get current distance to current destination/center point
var distance = Cesium.Cartesian3.distance(camera.positionWC, centerPoint);

console.log("heading: " + camera.heading + ", pitch: " + camera.pitch + ", range: " + distance);

var hpr = new Cesium.HeadingPitchRange(camera.heading, camera.pitch, distance);

// look at new destination with same heading/pitch/rnage
camera.lookAt(destination, hpr);

// calculate new distance after lookAt call
distance = Cesium.Cartesian3.distance(camera.positionWC, destination);

// print out new fields
console.log("heading: " + camera.heading + ", pitch: " + camera.pitch + ", range: " + distance);

What I'm seeing here is the heading and pitch changing when I do this. The range appears to be what I expect. Console output below

heading: 0.8743396718826268, pitch: -1.1817719339776191, range: 14901292.302976938
heading: 1.143094523538096, pitch: -1.2925451275096265, range: 14901292.302976938

Just hoping some could shed some light on whether I'm using the lookAtTranform incorrectly, or if I should be using some other function(s).

Thanks for the help,