I wonder if strictly speaking we need synchronization here to ensure correct visibility across threads (e.g. so another thread doesn't see a half-initialised value for the field). We probably piggie back off task execution etc so are extremely likely to get away with it; and that kind of strange thread visibility issue is very rare anyway (normally just get "see new value" or "see old value"). So let's just leave as is for now.