Updated the method so that *all* accesses to the future cache...

are synchronized. I think this is a simple race condition, so I'd rather
lock on this guy, so that it doesn't accidentally return null where it
shouldn't. I think this will solve the occasional null pointer
exceptions.

I believe this will resolve REP-558


# Don't merge until perf tests happen
Wait for a +1 from @dimtruck