The only thing that would force you to make your template parsing async is if you allow users to do async work inside their templates.  Node.js can do pretty much anything synchronously if you want it to (making http web requests takes a bit of work).  Most of the libraries just transform strings to functions so there's no real reason for there to be any async work there. 

P.S. The only two that actually operate asyncronously are `dust` and `qejs` the rest just trick you into thinking they do by providing a node style apie when in fact their syncronous (for an example take a look at the source code for the render function for [jade](https://github.com/visionmedia/jade/blob/master/lib/jade.js#L200-L220) no Async there  P.S. it also nicely demonstrates a template library that suffers from the problem `finished` would fix.)