request = new Request(event.request);
var response = await fetch(source, request);
fetch was caching but this was not appearing on the Cloudflare Caching Status dashboard nor we were getting a CF-Cache-status header back which all indicated that no caching was taking place on the Cloudflare. It was quite baffling.
Setting the cache ttl to 0 solved the issue:
request = new Request(event.request, {cf: {cacheTtl: 0}});
var response = await fetch(source, request);