In your codepen example, the problem still exists and also the animation plays over and over again.
I can reset my tween by creating a new tween within the complete function, using .set() and individually changing the values of each attribute back to original values. This seems a lot of work just to reset a tween (it does not work if I try and use .set() on the original tween). Code below -
let myTween = TweenMax.to(icon, time, {
rotation: `60`,
transformOrigin: "50% 50%",
ease: ease,
onComplete: function(){
TweenLite.set(icon, {rotation: `0`, transformOrigin: `50% 50%`})
// myTween.set(icon, {rotation: `0`, transformOrigin: `50% 50%`})
}
});