Cache based on futures.  Idea's taken from the spray caching library, and created in java 8