Глюк Flash ActionScript с методом setTimeout()

Сегодня потерял минут 20, пытаясь понять почему “не едут лыжи”.
Решения так и не нашел. Гугл также по этому поводу молчит.

Итак, код FLA-файла (ActionScript 2.0), в первом кадре:

import foo;
var foo1 = new foo();

Код внешнего файла foo.as:

class foo {

    function foo() {
        setTimeout(this.bar, 1000);
    }

    function bar() {
        trace(‘foo.bar called’);
    }
}

Думаете, это работает? Хрена-с два! Компилятор выдает ошибку:
foo.as, Line 4 / There is no method with the name ‘setTimeout’. / setTimeout(this.bar, 1000);

Почему-то компилятор, вместо того, чтбы найти имя “setTimeout” в списке глобальных функций, упорно считает, что я пытаюсь сделать вызов this.setTimeout().

Что примечательно, если использовать setInterval() вместо setTimeout(), то все прекрасно работает.
Также, если писать plain-код, без использования класса – все также прекрасно работает (и с setTimeout()).

Подпереть можно вот так:

class foo {

    function foo() {
        with (this) {
            setTimeout(this.bar, 1000);
        }
}

    function bar() {
        trace(‘foo.bar called’);
    }
}

Тогда все работает.

Эй, флэшеры? Есть мысли? Это баг флэша или я сегодня просто мало поспал?

P.S.: пришлось тупо подпереть с помощью with.