TweenMax not looping

I have (what should be) a really simple little piece of code inside a moviclip, trying to get it to fade in and out in a loop. Here’s the code (within the movieclip):

import gs.TweenMax;
this._alpha = 100;
alphaDown = function() {
    trace("alpha down");
    TweenMax.to(this, 0.5, {_alpha:50, onComplete:alphaUp});
};
alphaUp = function() {
    trace("alpha up");
    TweenMax.to(this, 0.5, {_alpha:100, onComplete:alphaDown});
};
alphaDown();

The movieclip fades down to 50 alpha, but won’t fade back up. In the output, I see a correct alternation between “alpha down” and “alpha up” every 0.5 seconds, but the clip itself isn’t actually changing its alpha. Any ideas what I’m doing wrong?