docs: function reloadProxy(opts, cb) {
      assert.object(opts, 'opts');
      assert.string(opts.basePath, 'opts.basePath');
      assert.optionalString(opts.excludePath, 'opts.excludePath');
      assert.string(opts.method, 'opts.method');
      assert.object(opts.req, 'opts.req');
      assert.object(opts.res, 'opts.res');
      assert.string(opts.routeName, 'opts.routeName');
      assert.string(opts.sourceFile, 'opts.sourceFile');
      assert.func(cb, 'cb');
  
      var excludeFullpath = opts.basePath + '/' + opts.excludePath;
  
      // clear require cache for code loaded from a specific base dir
      Object.keys(require.cache).forEach(function (cacheKey) {
          if (opts.excludePath && cacheKey.indexOf(excludeFullpath) !== -1) {
              return;
          } else if (cacheKey.indexOf(opts.basePath) !== -1) {
              delete require.cache[cacheKey];
          }
      });
  
      var handlers;
  
      try {
          handlers = require(opts.sourceFile);
      } catch (e) {
          var err = new verror.VError({
              name: 'EnrouteRequireError',
              cause: e,
              info: {
                  file: opts.sourceFile,
                  route: opts.routeName,
                  method: opts.method
              }
          }, 'failed to require file, possible syntax error');
  
          // now that the chain has failed, send back the require error.
          return cb(err);
      }
  
      // if no require error, execute the handler chain. any errors that occur at
      // runtime should be a runtime exception.
      var handlerChain = compose(handlers);
      return handlerChain(opts.req, opts.res, cb);
  }