We used a different design template. In the async callback, we act more like a device driver and simply buffer the result in memory:
var tweets = []; twitter.stream('statuses/filter', {'track':'whatever'}, function(stream) { stream.on('data', function (data) {
and then later, back to the normal Meteor runtime inside Fiber, either in the timer or as a result of the function, we reset the array of tweets and paste. The Javascript array doesn't care if it works in Fiber or not.
In our case, we do this with asynchronous IMAP email, not with tweets, but the analogy still holds.
source share