code: function get(start, end, repo) {
    start = utils.moment.utc(start);
    end = utils.moment.utc(end);
    var current = utils.moment.utc(start);
    var stream = new utils.stream.Stream();
    run();
    return stream;
  
    function run() {
      process.nextTick(function() {
        let period = utils.moment.utc(current).add(300, 'days');
        if (period.format('YYYY-MM-DD') >= end.format('YYYY-MM-DD')) {
          period = utils.moment.utc(end);
        }
  
        getPage(current, period, repo)
          .on('error', stream.emit.bind(stream, 'error'))
          .on('data', function(data) {
            stream.emit('data', data);
          })
          .on('end', function() {
            current.add(300, 'days');
            if (current.format('YYYY-MM-DD') >= end.format('YYYY-MM-DD')) {
              stream.emit('end');
              return;
            }
            run();
          });
      });
    }
  }
docs: Get a range of download counts for the specified repository.
  This method returns a stream of raw data
  in the form of `{ day: '2016-01-10', downloads: 123456 }`.
  
  ```js
  var start = new Date('2016-01-09');
  var end = new Date('2016-01-10');
  stats.get(start, end, 'micromatch')
  .on('error', console.error)
  .on('data', function(data) {
  console.log(data);
  })
  .on('end', function() {
  console.log('done.');
  });
  // { day: '2016-01-09', downloads: 53331 }
  // { day: '2016-01-10', downloads: 47341 }
  ```
  
  @param  {Date} `start` Start date of stream.
  @param  {Date} `end`   End date of stream.
  @param  {String} `repo`  Repository to get downloads for. If `repo` is not passed, then all npm downloads for the day will be returned.
  @return {Stream} Stream of download data.
  @api public