URL escape for new URL/fetch to fetch from other server

I’m not sure if it is only on Cloudflare or a general missing/error.
How ever, I have a request.url from which I build a new to get the result from our backend server.

var urlNew = new URL(request.url)
  urlNew.protocol = 'https:'
  urlNew.hostname = DEVEL_HOST
  urlNew.pathname = DEVEL_SUBPATH + urlNew.pathname
  if (urlNew.pathname == DEVEL_SUBPATH+'/') {
    urlNew.pathname += 'index.html'
  const rUrl = urlNew.toString().replace('+',"%2B")
  console.log('urlNew.toString()', rUrl)
  const b2Response = await fetch(rUrl, { redirect: 'follow' })

I would expect that the URL will encode all special chars to its URI equivalent, but it does not. So I have to const rUrl = urlNew.toString().replace('+',"%2B") to get the correct URL to fetch it.

Is it now a bug of URL or of fetch?

Best regards, Josef