function DataStore.Get(q,o,V)if V then return q.value end local J=0 if not q.haveValue then while not q.haveValue do local o,V=pcall(q._GetRaw,q)if not o then if q.backupRetries then J=J+1 if J>=q.backupRetries then q.backup=true q.haveValue=true q.value=q.backupValue break end end q:Debug("\071\101\116 \114\101\116\117\114\110\101\100 \101\114\114\111\114\058",V)end end if q.value~=nil then for o,V in pairs(q.beforeInitialGet)do q.value=V(q.value,q)end end end local g if q.value==nil and o~=nil then g=o else g=q.value end g=clone(g)q.value=g return g end
--[[**
	<description>
	Gets the result from the data store. Will yield the first time it is called.
	</description>

	<parameter name = "defaultValue">
	The default result if there is no result in the data store.
	</parameter>

	<parameter name = "dontAttemptGet">
	If there is no cached result, just return nil.
	</parameter>

	<returns>
	The value in the data store if there is no cached result. The cached result otherwise.
	</returns>
**--]]
function DataStore:Get(defaultValue, dontAttemptGet)
	if dontAttemptGet then
		return self.value
	end

	local backupCount = 0

	if not self.haveValue then
		while not self.haveValue do
			local success, error = pcall(self._GetRaw, self)

			if not success then
				if self.backupRetries then
					backupCount = backupCount + 1

					if backupCount >= self.backupRetries then
						self.backup = true
						self.haveValue = true
						self.value = self.backupValue
						break
					end
				end

				self:Debug("Get returned error:", error)
			end
		end

		if self.value ~= nil then
			for _, modifier in pairs(self.beforeInitialGet) do
				self.value = modifier(self.value, self)
			end
		end
	end

	local value

	if self.value == nil and defaultValue ~= nil then --not using "not" because false is a possible value
		value = defaultValue
	else
		value = self.value
	end

	value = clone(value)

	self.value = value

	return value
end
