Action APIs default to a uselang of 'user', which means that their contents are by default sharded by user and so attempting to set setCacheMode('public') will fall back to setCacheMode('anon-public-user-private') with a debug note explaining why.
For APIs where our content doesn't depend on the uselang flag, it'd be great for us to control the cache strategy rather than being out-guessed by the anti-stubbing hack for T85635. Getting all downstream callers to migrate is a little painful, and FWICT we can't even over-ride the value to be default='content'.