diff --git a/lib/init.lua b/lib/init.lua index 84c39e2..091cf11 100644 --- a/lib/init.lua +++ b/lib/init.lua @@ -626,7 +626,9 @@ function Promise.fold(list, reducer, initialValue) accumulator = accumulator:andThen(function(previousValueResolved) return reducer(previousValueResolved, resolvedElement, i) end) - end):andThenReturn(accumulator) + end):andThen(function() + return accumulator + end) end --[=[ diff --git a/lib/init.spec.lua b/lib/init.spec.lua index b545b37..3b93e74 100644 --- a/lib/init.spec.lua +++ b/lib/init.spec.lua @@ -1043,9 +1043,16 @@ return function() end) it("should accept promises in the list", function() - local sum = Promise.fold({ Promise.resolve(1), 2, 3 }, function(sum, element) + local resolve + + local sum = Promise.fold({ Promise.new(function(r) + resolve = r + end), 2, 3 }, function(sum, element) return sum + element end, 0) + + resolve(1) + expect(Promise.is(sum)).to.equal(true) expect(sum:getStatus()).to.equal(Promise.Status.Resolved) expect(sum:expect()).to.equal(6)