docs: function tail(file, options) {
    options = _.opts(options, {follow: false, lines: 10, callback: null, offset: null});
    let fileData = '';
    let callback = _.isFunction(options.callback) ? options.callback : null;
    // It makes no sense to do follow without a callback
    if (options.follow && !callback) callback = console.log;
  
    let lines = parseInt(options.lines, 10);
    if (!_.isFinite(lines) || lines < 0) lines = 10;
    const size = fileSize(file);
    if (size === -1) {
      return '';
    }
    let fd = null;
    try {
      fd = fs.openSync(file, 'r');
      const bytesToRead = Math.min(size, (1024 * lines));
      const offset = Math.max(options.offset || 0, size - bytesToRead);
      const buffer = new Buffer(bytesToRead);
      const bytesRead = fs.readSync(fd, buffer, 0, bytesToRead, offset);
      fileData = _.takeRight(
        buffer.slice(0, bytesRead)
          .toString().trim()
          .split('\n'),
        lines
      ).join('\n');
      if (callback) _.each(fileData.split('\n'), line => callback(line));
    } catch (e) {
      /* not empty */
    } finally {
      fs.closeSync(fd);
    }
    if (options.follow) {
      const tailObj = new Tail(file);
      tailObj.on('line', (d) => {
        callback(d);
      });
      tailObj.on('error', (d) => {
        callback(d);
      });
      return tailObj;
    } else {
      return fileData;
    }
  }