docs: function ctx() {
      return function context(req, res, next) {
          var data = {};
  
          req.set = function set(key, value) {
              assert.string(key, 'key must be string');
  
              if (key === '') {
                  assert.fail('key must not be empty string');
              }
              data[key] = value;
          };
  
          req.get = function get(key) {
              assert.string(key, 'key must be string');
  
              if (key === '') {
                  assert.fail('key must not be empty string');
              }
              return data[key];
          };
  
          // private method which returns the entire context object
          req._getAllContext = function _getAllContext() {
              return data;
          };
  
          return next();
      };
  }