Are the following lines in lib/index.js really necessary?
this.fd = fs.openSync(this.device, this.flags);
this.input = fs.createReadStream(null, this);
At least, you do not check for a valid file descriptor first. So why not forward the device string directly to the createReadStream function instead of null?
this.input = fs.createReadStream(this.device, this);