docs: function(callback) {
      const contentStream = new stream.Writable();
      const data = [];
  
      contentStream._write = function(chunk) {
        callback(null, chunk.toString());
      };
  
  
      // here we can add the options in the future:
      // (options, context, gitRawCommitsOpts, parserOpts, writerOpts);
      const options = {
        preset: program.changelogpreset,
        releaseCount: program.releasecount,
      };
      changelog(options)
      // Use through() to handle multiple chunks which could be returned from changelog()
          .pipe(through({
            objectMode: true,
          }, function(chunk, enc, cb) {
            try {
              data.push(chunk);
            } catch (err) {
              setImmediate(function() {
                throw err;
              });
            }
  
            cb();
          }, function(cb) {
          // This function is called once ALL the object-chunks have been processed.
            data.push(null);
  
            cb(null, data.join('')); // Pass the data to the next stream processor
          }))
          .pipe(contentStream);
    }