Value implements a Future Value in which a reference is initialized once
(and only once) using the Initialize function. Only one Go routine can call
Initialize whereas multiple Go routines may invoke Get, and will wait
until the reference has been initialized.
Regardless of whether Initialize returns success or error,
the value cannot be initialized again.