No, you could enjoy a false cache hit.

- Thread 1 confirms cached.from and cached.to are the same as the arguments
- Thread 2 takes over and replaces the contents of the field
- Thread 1 now returns whatever happens to be in the field - it's a typemap which translates different symbols than the one which was requested.