docs: function(done) {
      this.async = true;
      var self = this;
  
      function finish(err, file) {
        var hasCallback = (typeof done === 'function');
        if (err && !hasCallback) return self.emit('error', err);
        if (err) return done(err);
        done(null, file);
      }
  
      if (this.data) {
        this.createFile(this.file, this.uri, this.file, this.data, finish).parse(finish);
      } else {
        this.resolve(this.file, this.cwd, function(err, file) {
          if (err) return finish(err);
          file.parse(finish);
        });
      }
  
      return this;
    }