go.Animate not animating object

I am attempting to animate an object within a node so that it rotates indefinitely based on the status property in node data.

I am using the code below to attempt to create and initialize a looping animation on the angle property of the STATUS_ICON object within qualifying nodes.

The problem that I am running into is that the object does not animate and I am not sure what other steps to troubleshoot. I have been able to animate transitions in the same project with no issue using AnimationTrigger on bound properties, but using the Animation class to create an infinite animation has not yielded any results so far.

    diagram.model.addChangedListener(function(evt, obj) {
      if (!evt.isTransactionFinished) return;
      const txn = evt.object;
      if (txn === null) return;

      txn.changes.each(function(e) {
        if (e.model === null) return;
        const nodes = e.model.nodeDataArray;
        nodes.forEach(node => {
          if (node.status === 'running') {
            const statusIcon = diagram.findNodeForKey(node.id).findObject('STATUS_ICON');
            if (!statusIcon) return;

            // rotate the status icon
            const animation = new go.Animation({
              duration: 2000,
              runCount: Infinity,
              easing: go.Animation.EaseLinear,
            });
            animation.add(statusIcon, 'angle', statusIcon.angle, statusIcon.angle + 359, true);
            animation.start();

            // debugging
            console.log('animation.isAnimating', animation.isAnimating);
            console.log(
              'diagram.animationManager.isAnimating',
              diagram.animationManager.isAnimating,
            );
            console.log('diagram.animationManager.isEnabled', diagram.animationManager.isEnabled);
            console.log('diagram.animationManager.isTicking', diagram.animationManager.isTicking);
          }
        });
      });
    });

The output of the console.logs immediately following animation.start() are below:
image

The STATUS_ICON object is:

      GraphObject.make(
        TextBlock,
        {
          name: 'STATUS_ICON',
          angle: 0,
          font: '12px rodeoicons, rodeoicons',
          stroke: '#FFF',
          margin: new Margin(0, 0, 2, 0),
        },
        new Binding('angle'),
        new Binding('text', '', ({ status }) => nodeStatusMapping?.[status]?.icon),
        new Binding('stroke', '', ({ status }) => nodeStatusMapping?.[status]?.stroke),
      )

Do you have any suggestions for what to try next to solve this problem?

GoJs version: 2.2.15
GoJs-react 1.1.1
React: 17.0.1

Here’s an example where a button click sets a status property to start an animation: https://codepen.io/jhardy/pen/KKxoJLG

Are you able to provide us a reproduction in an environment similar to yours? Maybe via CodeSandbox?