emitting `prefinish` in the callback doesn't defer `finish`