Capture errors raise by emit() and re-raise them after the parser has finished running.

This commit is contained in:
James Coglan
2016-12-29 00:56:55 +00:00
parent 524aa3f356
commit 0eb64913ca
4 changed files with 18 additions and 0 deletions
+2
View File
@@ -68,6 +68,8 @@ module WebSocket
end
end
end
reraise_emit_exception
end
def frame(buffer, type = nil, error_type = nil)
+13
View File
@@ -38,6 +38,9 @@ module WebSocket
@listeners[event.to_s].dup.each do |listener|
listener.call(*args)
end
rescue => error
@emit_exception ||= error
end
def listener_count(event)
@@ -48,6 +51,16 @@ module WebSocket
def listeners(event)
@listeners[event.to_s]
end
private
def reraise_emit_exception
if @emit_exception
error = @emit_exception
@emit_exception = nil
raise error
end
end
end
end
+2
View File
@@ -127,6 +127,8 @@ module WebSocket
buffer = nil
end
end
reraise_emit_exception
end
def binary(message)
+1
View File
@@ -41,6 +41,7 @@ module WebSocket
def parse(chunk)
@parser.parse(chunk)
reraise_emit_exception
end
def binary(message)