Exception when attempting to wrap Buffered-writer

Disclaimer: I'm fairly new to node (but not to JavaScript).

Im just trying to write a logger class, which holds a few lines at a time in memory, then flushes to disk when its buffer is reaching capacity


Problem

Calling my logger wrapper results in an exception in buffered writer

Im sure Ive misunderstood how require() works, and also various people advised me to create the object using new chatlogs.Chatlogger() but itI dont see many other node libs using this way of working

/www/im/node_modules/buffered-writer/lib/buffered-writer.js:125
    cb ();
        ^
TypeError: undefined is not a function
    at Writer.flush (/www/nodeim/node_modules/buffered-writer/lib/buffered-writer.js:125:3)
    at Chatlogger.close (/www/nodeim/helpers/chatlogs.js:27:14)
    at Object.<anonymous> (/www/nodeim/app.js:76:16)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3

calling code...

var chatlogs = require('./helpers/chatlogs.js'); 
var chatlogger_obj = new chatlogs.Chatlogger();

chatlogger_obj.open("logs/log.txt");
chatlogger_obj.log("TESTING");
chatlogger_obj.close();

process.exit(0);

Wrapper class

./helpers/chatlogs.js

exports.version = '0.0.1';

var 
  buffer = require('buffered-writer'),
    fs = require('fs');

var Chatlogger = function() {
    this.handle = null,
    this.filename = "",
    this.dirtyops = 0;
}

Chatlogger.prototype.open = function (filename) {

    //fs.unlink(filename);

    this.filename = filename;
    this.handle = buffer.open(filename)
        .on ("error", function (error) {
            //this.handle = null;
            console.log (error);
        });
}

Chatlogger.prototype.close = function() {
    console.log("CLOSING");
    this.handle.flush();
    this.handle.close();
    this.handle = null;
}

Chatlogger.prototype.log = function (str) {

    console.log(str);
    this.handle.writeln(str);

    if (this.dirtyops++ > 5)
    {
        console.log("FLUSHING");
        this.handle.flush();
        this.dirtyops = 0;
    }
}

module.exports.Chatlogger = Chatlogger;

I'm the author of this module. You need to pass a callback to the flush function, but you don't need to call to flush. When the buffered-writer closes or you exceed the buffer size when writing, the data is automatically flushed to disk.

Writer#flush(callback)