 # Chrome.
 funcAliasFileLineColumnRe = /// ^
   \s{4}at\s
-  (\S+)\s         # function
+  (.+)\s          # function
   \[as\s(\S+)\]\s # alias
   \(
-    (.+):         # file
-    (\d+):        # line
-    (\d+)         # column
+    (?:
+      (?:
+        (.+):     # file
+        (\d+):    # line
+        (\d+)     # column
+      )|native
+    )
   \)
 $ ///
 
 # Chrome.
 funcFileLineColumnRe = /// ^
   \s{4}at\s
-  (\S+)\s   # function
+  (.+)\s       # function
   \(
-    (.+):   # file
-    (\d+):  # line
-    (\d+)   # column
+    (?:
+      (?:
+        (.+):  # file
+        (\d+): # line
+        (\d+)  # column
+      )|native
+    )
   \)
-$ ///
-
-# Firefox.
-funcFileLineRe = /// ^
-  (\S*)@ # function
-  (.+):  # file
-  (\d+)  # line
 $ ///
 
 # Chrome.

      else
        column = 0
      backtrace.push({
        function: m[1]
        file: m[2]
        line: parseInt(m[3], 10)
        column: column
      })
      continue


      continue

    console.debug("airbrake: can't parse", line)
    backtrace.push({
      function: '',
      file: line,
      line: 0,
      column: 0,
    })

  if backtrace.length == 0 and (e.fileName or e.lineNumber or e.columnNumber)
    backtrace.push({
