return the string in the fetch instead of the Stream
add the caching
throw exception if it is null too
the getBody returns a StreamInterface