Unlike curl, Chrome and Firefox both have built-in caches, so the fact that subsequent requests are served from those caches might be confusing your results.The cache-control: public, max-age=3600 header indicates that the image can be cached for an hour. If the image is being fetched again before that hour is set up, there may be a different issue causing it not to cache.
Ensure that the cache settings in your browser allow for the image caching. And if your browser is set to always check for new content (through a developer option) it may bypass the cache.For more troubleshooting refer to this.
Also it depends of the cache mode, if you set the cache mode to FORCE_CACHE_ALL, the default time to live (TTL) for content caching is 3600 seconds (1 hour), unless you explicitly set a different TTL, also I will share with you the TTL overrides document that give you fine-grained control over how long Cloud CDN caches your content before revalidating it.