if retrieve func returns null, don't cache