I've run into the same problem, but I'm unable to get your solution to work.
Here's what I've tried:
var laserAni:TimelineMax = new TimelineMax();
laserAni
.to(laser, laserFadeTime, {alpha:1, delay:laserDelay})
.from(laser, laserMoveTime, {x:-250 })
.to(laser, laserFadeTime, {alpha:0});
var allAni:TimelineMax = new TimelineMax();
//allAni.append(laserAni);//Only runs once if repeated
//allAni.append( new TweenMax(laserAni, laserAni.duration, {currentTime:laserAni.duration} ) );//Implicit coercion of a value of type Function to an unrelated type Number.
//allAni.append( new TweenMax(laserAni, laserAni.duration, {} ) );//Implicit coercion of a value of type Function to an unrelated type Number.
//allAni.append( new TweenMax(laserAni, 3, {currentTime:laserAni.duration} ) );//Property currentTime not found on com.greensock.TimelineMax and there is no default value.
allAni.append( new TweenMax(laserAni, 3, {} ) );//Only runs once if repeated
allAni.append( new TweenMax(laserAni, 3, {} ) );
Probably missing somethig simple...
Thanks.