I just ran into this and found what I think is a better solution.
If you have a component that is rendering a cell for a single object, and you want to do things like dynamically getting an icon, or some other call, then re-render once it's returned (which I think is a pretty common thing), you can simply wrap the entire cell in an <aura:iteration>
tag.
Your component might look like this:
<aura:attribute name="render_list" type="List" />
<aura:attribute name="item" type="Object" />
<aura:iteration items="{!v.render_list}" var="render" indexVar="indx">
{!v.item.name}
</aura:iteration>
And your callback code might do this:
var item = component.get("v.item");
var render_list = [item];
component.set("v.render_list", render_list);
This is taking advantage of <aura:iteration>
being aware that it needs to re-render it's contents on change. Much easier to control what happens and localize where a re-render needs to happen at an object level.