Nur am Rande
fetch('/foo').then(response => document.querySelector('#bar').innerHTML = response.text())
response.text() ist asynchron & gibt wieder einen Promise zurück. Eher:
fetch('/foo')
.then((response) => response.text())
.then((text) => {
document.querySelector('#bar').innerHTML = text;
})
Wobei hier noch das Error Handling fehlt.