сам себе отвечу.
приходится делать через $.Deferred()
var fadeSpeed = 200;
var d = $.Deferred();
$("#div").stop().fadeOut(fadeSpeed, function() {
$("#div").html('тут вызывается некая функция которая создает текст');
});
d.done(function() {$("#div").fadeIn(fadeSpeed)});
хотя иногда все равно создается впечатление что рановато срабатывает, но судя по всему это кажется.