Provide a TaskFuture implementation that has a transient backing Future instead of a backing CACHE. This does mean the reference to the Future will not survive deserialization/serialization. However, if a project knows the lifecycle of the TaskFuture instance and it will not be deserilaized/serialized then the CACHING option is not required. This also eliminates the overhead to configure the CACHE.
The transient implementation can be the default and if the CACHING option is required then this can be enabled via a runtime property.