@@ -28,7 +28,7 @@ class Response
2828 attr_reader :code , :payload
2929
3030 def initialize ( code , payload = nil )
31- @code = code
31+ @code = code
3232 @payload = payload || { }
3333
3434 assert_ok
@@ -37,11 +37,8 @@ def initialize(code, payload = nil)
3737 def error
3838 error , message , backtrace = process_error
3939 klass = Error . for_error ( error ) || return
40-
4140 ex = klass . new ( message )
42- ex . set_backtrace ( caller )
43- add_backtrace ex , backtrace
44-
41+ add_cause ( ex , error , backtrace )
4542 ex
4643 end
4744
@@ -59,34 +56,12 @@ def assert_ok
5956 raise Error ::ServerError , self
6057 end
6158
62- def add_backtrace ( ex , server_trace )
63- return unless server_trace
64-
65- backtrace = case server_trace
66- when Array
67- backtrace_from_remote ( server_trace )
68- when String
69- server_trace . split ( "\n " )
70- end
71-
72- ex . set_backtrace ( backtrace + ex . backtrace )
73- end
74-
75- def backtrace_from_remote ( server_trace )
76- server_trace . filter_map do |frame |
77- next unless frame . is_a? ( Hash )
78-
79- file = frame [ 'fileName' ]
80- line = frame [ 'lineNumber' ]
81- meth = frame [ 'methodName' ]
82-
83- class_name = frame [ 'className' ]
84- file = "#{ class_name } (#{ file } )" if class_name
85-
86- meth = 'unknown' if meth . nil? || meth . empty?
87-
88- "[remote server] #{ file } :#{ line } :in `#{ meth } '"
89- end
59+ def add_cause ( ex , error , backtrace )
60+ cause = Error ::WebDriverError . new
61+ cause . set_backtrace ( backtrace )
62+ raise ex , cause : cause
63+ rescue Error . for_error ( error )
64+ ex
9065 end
9166
9267 def process_error
0 commit comments