synchronize access while iterating or adding.

note: non-synchronized get()'s are not protected against, but atleast we
won't crash.
(if the fetch fails, the router cache will remain null, and the next
tick/action will update it).