mirror of
				https://github.com/AmberGraceRblx/luau-promise.git
				synced 2025-11-04 03:59:17 +00:00 
			
		
		
		
	Allow rejection with error objects
This commit is contained in:
		
							parent
							
								
									faa4f73dd3
								
							
						
					
					
						commit
						266e265e20
					
				
					 2 changed files with 20 additions and 1 deletions
				
			
		
							
								
								
									
										11
									
								
								lib/init.lua
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								lib/init.lua
									
									
									
									
									
								
							| 
						 | 
					@ -131,11 +131,20 @@ end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local function makeErrorHandler(traceback)
 | 
					local function makeErrorHandler(traceback)
 | 
				
			||||||
 | 
						assert(traceback ~= nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return function(err)
 | 
						return function(err)
 | 
				
			||||||
 | 
							-- If the error object is already a table, forward it directly.
 | 
				
			||||||
 | 
							-- Should we extend the error here and add our own trace?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if type(err) == "table" then
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return Error.new({
 | 
							return Error.new({
 | 
				
			||||||
			error = err,
 | 
								error = err,
 | 
				
			||||||
			kind = Error.Kind.ExecutionError,
 | 
								kind = Error.Kind.ExecutionError,
 | 
				
			||||||
			trace = debug.traceback(err, 2),
 | 
								trace = debug.traceback(tostring(err), 2),
 | 
				
			||||||
			context = "Promise created at:\n\n" .. traceback
 | 
								context = "Promise created at:\n\n" .. traceback
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -925,6 +925,16 @@ return function()
 | 
				
			||||||
			expect(errorText:find("errortext")).to.be.ok()
 | 
								expect(errorText:find("errortext")).to.be.ok()
 | 
				
			||||||
		end)
 | 
							end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							it("should reject with error objects", function()
 | 
				
			||||||
 | 
								local object = {}
 | 
				
			||||||
 | 
								local success, value = Promise.try(function()
 | 
				
			||||||
 | 
									error(object)
 | 
				
			||||||
 | 
								end):_unwrap()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								expect(success).to.equal(false)
 | 
				
			||||||
 | 
								expect(value).to.equal(object)
 | 
				
			||||||
 | 
							end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		it("should catch asynchronous errors", function()
 | 
							it("should catch asynchronous errors", function()
 | 
				
			||||||
			local bindable = Instance.new("BindableEvent")
 | 
								local bindable = Instance.new("BindableEvent")
 | 
				
			||||||
			local promise = Promise.try(function()
 | 
								local promise = Promise.try(function()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue