В очередной раз, спасибо за ссылку.
Можно сделать через pattern:
http://alljs.ru/articles/timeout/set...l.html#pattern
А можно присвоить значение arguments.callee переменной: var self = arguments.callee, а потом в тайм-ауте вызвать с аргументом callback.
setTimeout ( function () { self ( callback ); }, 500 );
Все должно работать.