| So it turns out my workaround above is incomplete, because getConversationMap() uses the same pattern as getConversationIdGenerator() and is therefore also prone to races. We're now testing an updated version of the workaround that also invokes getConversations() early so that the conversation map will also be populated before a race can occur. |