querystringStringify = obj => {
  let ret = querystring.stringify(obj, null, null, { encodeURIComponent: escape })
  ret = ret.replace(/[@*/+]/g, char => // `escape` doesn't encode the characters @*/+ so we do it manually
  `%${char.charCodeAt(0).toString(16).toUpperCase()}`)
  return ret
}
`querystring.stringify` using `escape` instead of encodeURIComponent, since bittorrent
clients send non-UTF8 querystrings
@param  {Object} obj
@return {string}