get value() {
        if (!this._didRun) {
            try {
                this._value = this.executor();
            }
            catch (err) {
                this._error = err;
            }
            finally {
                this._didRun = true;
            }
        }
        if (this._error) {
            throw this._error;
        }
        return this._value;
    }
Get the wrapped value.

This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only
resolved once. `getValue` will re-throw exceptions that are hit while resolving the value