code: function TokenBucket(options) {
      assert.object(options, 'options');
      assert.number(options.capacity, 'options.capacity');
      assert.number(options.fillRate, 'options.fillRate');
  
      this.tokens = this.capacity = options.capacity;
      this.fillRate = options.fillRate;
      this.time = Date.now();
  }
docs: /--- Internal Class (TokenBucket) 
  An implementation of the Token Bucket algorithm.
  
  Basically, in network throttling, there are two "mainstream"
  algorithms for throttling requests, Token Bucket and Leaky Bucket.
  For restify, I went with Token Bucket.  For a good description of the
  algorithm, see: http://en.wikipedia.org/wiki/Token_bucket
  
  In the options object, you pass in the total tokens and the fill rate.
  Practically speaking, this means "allow `fill rate` requests/second,
  with bursts up to `total tokens`".  Note that the bucket is initialized
  to full.
  
  Also, in googling, I came across a concise python implementation, so this
  is just a port of that. Thanks http://code.activestate.com/recipes/511490 !
  
  @private
  @class
  @param {Object} options contains the parameters:
  - {Number} capacity the maximum burst.
  - {Number} fillRate the rate to refill tokens.