function DataStore.Get(c,N,U)if U then return c.value end local v=0 if not c.haveValue then while not c.haveValue do local N,U=pcall(c._GetRaw,c)if not N then if c.backupRetries then v=v+1 if v>=c.backupRetries then c.backup=true c.haveValue=true c.value=c.backupValue break end end c:Debug("\071\101\116 \114\101\116\117\114\110\101\100 \101\114\114\111\114\058",U)end end if c.value~=nil then for N,U in pairs(c.beforeInitialGet)do c.value=U(c.value,c)end end end local Z if c.value==nil and N~=nil then Z=N else Z=c.value end Z=clone(Z)c.value=Z return Z end

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
