> I need to be able to asynchronously get data from all kinds of places before I can even think about calling React.renderToString
You can define middlewares, as you would do server-side with expressjs:
router.route({
method: 'GET',
path: '/users/:userId',
handler: function (ctx) {
// load user async
getUser(ctx.params.userId, function (err, user) {
ctx.user = user;
ctx.next(); // exec next middleware
});
}
});
There is a `demo` folder with a detailed example. The main entry point for the client is here
https://github.com/gcanti/tom/blob/master/demo/client.js#L21