Por qué esto no funciona (lo tomé prestado de https://jsfiddle.net/xlanglat/tyh6jjpy/ ):
callWs2 = function(){ let url = 'https://jsonplaceholder.typicode.com/posts/1'; fetch(url) .then(function(response) { return response.text(); }) } console.log(callWs2());El método .then devuelve una Promise y, en su caso, devuelve una Promise que se resuelve con cualquier response.text() se resuelva. Nota: response.text() también devuelve una Promise .
Devuelve otro objeto de promesa pendiente, la resolución/rechazo de la promesa devuelta para entonces será posterior a la resolución/rechazo de la promesa devuelta por el manejador. Además, el valor resuelto de la promesa devuelta en ese momento será el mismo que el valor resuelto de la promesa devuelta por el controlador. fuente
Ahora, debe return esta Promise desde su función.
Y finalmente, cuando llama a la función, necesita encadenarla con .then porque la función devuelve una Promise .
function callWs2() { let url = 'https://jsonplaceholder.typicode.com/posts/1'; return fetch(url) .then(function(response) { const res = response.text(); console.log(res instanceof Promise); // true return res; }) } callWs2().then(console.log);