function attempt(...fns) {
  for (let i = 0; i < fns.length; i++) {
    try {
      return fns[i]();
    } catch (err) {
      if (i === fns.length - 1) throw err;
    }
  }
}
Parses the specified src string with babylon, returning the resulting AST
and skipping the undocumented File root node, which is neither Babylon AST
nor ESTree spec compliant.

@param {string} src      Source to parse
@param {string} filePath Path to the file