     @_compileClient(str, opts)
 
   compileFileClient: (file, opts = {}) ->
-    @compileClient(
-      fs.readFileSync(file, 'utf8'),
-      _.extend(opts, {filename: file})
-    )
+    readFile(file).then _.partialRight(@compileClient, _.extend(opts, {filename: file})).bind(@)
 
 module.exports = Adapter

    @_compile(str, opts)

  compileFile: (file, opts = {}) ->
    @compile(fs.readFileSync(file, 'utf8'), _.extend(opts, {filename: file}))

  compileClient: (str, opts = {}) ->
    if not @_compileClient

fs        = require 'fs'
W         = require 'when'
_         = require 'lodash'
nodefn    = require 'when/node'
readFile  = _.partialRight(nodefn.lift(fs.readFile), 'utf8')

class Adapter
  render: (str, opts = {}) ->
