From 4bba3366b24e3277d06f12f9f9105c7dc059eb07 Mon Sep 17 00:00:00 2001 From: Kampfkarren Date: Mon, 16 Sep 2019 15:18:27 -0700 Subject: [PATCH] Fix an issue with :GetTable and yielding --- DataStore2/init.lua | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/DataStore2/init.lua b/DataStore2/init.lua index 17fcf03..0e305fb 100644 --- a/DataStore2/init.lua +++ b/DataStore2/init.lua @@ -156,24 +156,26 @@ function DataStore:GetTableAsync(default, ...) assert(default ~= nil, "You must provide a default value.") return self:GetAsync(default, ...):andThen(function(result) - local changed = false - assert( - typeof(result) == "table", - ":GetTable/:GetTableAsync was used when the value in the data store isn't a table." - ) - - for defaultKey, defaultValue in pairs(default) do - if result[defaultKey] == nil then - result[defaultKey] = defaultValue - changed = true + return Promise.async(function(resolve) + local changed = false + assert( + typeof(result) == "table", + ":GetTable/:GetTableAsync was used when the value in the data store isn't a table." + ) + + for defaultKey, defaultValue in pairs(default) do + if result[defaultKey] == nil then + result[defaultKey] = defaultValue + changed = true + end end - end - if changed then - self:Set(result) - end + if changed then + self:Set(result) + end - return result + resolve(result) + end) end) end