Да не, багов то в конвеере нет.
(тесты, конечно хороши для демонстрации багов, а не их отсутствия, но загнать багу в полторы сотни строк, покрытых на 100% всё же сложно)
Есть ньюансы самой логики конвеера.
Впринципе, Ваша реализация в данном случае не сложнее применения конвеера, но, всё-таки, рабочий код:

Код AS3:
package
{
import com.greensock.data.TweenLiteVars;
import com.greensock.TweenLite;
import com.potapenko.remake.Conveyor;
import flash.events.Event;
/**
* ...
* @author Dima
*/
public class TweenQueue
{
private var _conv: Conveyor = new Conveyor();
private var _isPlaying:Boolean = false;
public function TweenQueue() {
_conv.addEventListener(Event.COMPLETE, onConvComplete);
}
private function onConvComplete(event:Event):void {
_isPlaying = false;
}
public function add(target: Object, duration: Number, tween: Object): void {
addMany(Vector.<Object>([target]), Vector.<Number>([duration]), Vector.<Object>([tween]));
}
public function addMany(targets: Vector.<Object>, durations: Vector.<Number>, vars: Vector.<Object>): void {
_conv.add(startTweenSet, new TweenSet(targets, durations, vars));
if (!_isPlaying) {
// Вот эти вот фокусы с проверками, не дошёл ли до конца конвеер и можно ли вызвать play
// в боевом коде у нас загнаны внуть конвеера в новую функцию launch()
// а выставление _isPlaying = false - в конец функции play()
// Для заранее запрограммированных действий оно не надо было, а для очереди оказалось важно
_conv.play();
_isPlaying = true;
}
}
private function startTweenSet(ts:TweenSet):void {
_conv.stop();// Начало асинхронного блока
ts.play(resume);
}
public function resume(): void {
_conv.play();// Конец асинхронного блока
}
}
}
Конвеер он больше для заранее заданного списка событий подходит, чем для очереди, хотя, вот - кода поменьше получилось.
Я так понял - задача - сделать список с плавно разъезжающимися элементами?
Так для этого не нужно очередей.
Просто при добавлении/удалении элемента каждому оставшемуся назначаем твин в точку, в которой он должен быть - 50 объектов - 50 одновременных твинов - ничего страшного.
(при этом плюём с высокой колокольни двигался ли он до этого или нет - TweenLite автоматом прерывает передыдущий твин для объекта, на который вешается следующий)
Всё!
Ну если не считать, что надо применить некоторые хитрости, чтобы одновременное движение и исчезание под этим элементом другого - не выглядело криво (например, у меня они исчезали скейлом в 0 и при уменьшении сдвигались в сторону, но можно и таки ввести ожидание конца исчезновения или ещё что)