code: function userAgentConnection(options) {
      var opts = options || {};
      assert.optionalObject(opts, 'options');
      assert.optionalObject(opts.userAgentRegExp, 'options.userAgentRegExp');
  
      var re = opts.userAgentRegExp;
  
      if (!re) {
          re = /^curl.+/;
      }
  
      function handleUserAgent(req, res, next) {
          var ua = req.headers['user-agent'];
  
          if (ua && re.test(ua)) {
              res.setHeader('Connection', 'close');
  
              if (req.method === 'HEAD') {
                  res.once('header',
                      res.removeHeader.bind(res, 'content-length'));
              }
          }
  
          next();
      }
  
      return (handleUserAgent);
  }
docs: /--- API 
  This basically exists for curl.  curl on HEAD requests usually
  just sits there and hangs, unless you explicitly set
  Connection:close.  And in general, you probably want to set
  Connection: close to curl anyway.
  
  Also, because curl spits out an annoying message to stderr about
  remaining bytes if content-length is set, this plugin also drops
  the content-length header (some user agents handle it and want it,
  curl does not).
  
  To be slightly more generic, the options block takes a user
  agent regexp, however.
  @public
  @function userAgentConnection
  @param    {Object} options an options object
  @returns  {Function}