Improved initialization error logging
Awaiting construction would result in errors that point to the original source of the error and did not include the
trace of the awaiter. It would also potentially result in redundant log messages.
Instead we now log the original error once and throw a new error anywhere waiting on construction.