Performing lazy and/or just-once initialization is a simple optimization. But what if the initialization is async?