diff --git a/js/src/main/scala/io/kaitai/struct/format/JavaScriptClassSpecs.scala b/js/src/main/scala/io/kaitai/struct/format/JavaScriptClassSpecs.scala index 049bca176..b95b988a6 100644 --- a/js/src/main/scala/io/kaitai/struct/format/JavaScriptClassSpecs.scala +++ b/js/src/main/scala/io/kaitai/struct/format/JavaScriptClassSpecs.scala @@ -1,8 +1,10 @@ package io.kaitai.struct.format import io.kaitai.struct.JavaScriptImporter +import io.kaitai.struct.problems.ErrorInInput import scala.concurrent.Future +import scala.concurrent.ExecutionContext import scala.scalajs.concurrent.JSExecutionContext class JavaScriptClassSpecs(importer: JavaScriptImporter, firstSpec: ClassSpec) @@ -12,13 +14,19 @@ class JavaScriptClassSpecs(importer: JavaScriptImporter, firstSpec: ClassSpec) val MODE_ABS = "abs" override def importRelative(name: String, path: List[String], inFile: Option[String]): Future[Option[ClassSpec]] = - doImport(name, MODE_REL) + doImport(name, path, MODE_REL) override def importAbsolute(name: String, path: List[String], inFile: Option[String]): Future[Option[ClassSpec]] = - doImport(name, MODE_ABS) + doImport(name, path, MODE_ABS) - def doImport(name: String, mode: String): Future[Option[ClassSpec]] = - importer.importYaml(name, mode).toFuture.map { (yaml) => - val yamlScala = JavaScriptKSYParser.yamlJavascriptToScala(yaml) - Some(ClassSpec.fromYaml(yamlScala, Some(name))) - }(JSExecutionContext.queue) + def doImport(name: String, path: List[String], mode: String): Future[Option[ClassSpec]] = { + implicit val ec: ExecutionContext = JSExecutionContext.queue + + importer.importYaml(name, mode).toFuture + .transform((yaml) => { + val yamlScala = JavaScriptKSYParser.yamlJavascriptToScala(yaml) + Some(ClassSpec.fromYaml(yamlScala, Some(name))) + }, (err) => { + throw ErrorInInput(err, path).toException + }) + } }