add .json to URLs
always return a promise from fetch