В общем. такое дело. Алатар был прав, а я дурак: после его слов я усомнился и полез проверять. Мозг перебрал уже перебранные варианты и нашел на пыльной полочки один. У меня в коде вот такая проверка:

Код AS3:
if (_sound.bytesLoaded !== _sound.bytesTotal) _sound.close();
Ага, когда может это условие не сработать? Правильно, когда bytesLoaded или .bytesTotal не определены (один из).
Один из них uint и не может быть undefined по умолчанию, второй просто int. Убрал условие, оставив закрытие потока - voila! Вот теперь Алатар снова прав и нужно оборачивать в try-catch. А виновата невнимательность. Всем спасибо, надеюсь, на этом борьба с потоками закончится.