val tempDir = util.Files.createTempDir() val ops = for { jobResolved <- Resolver.resolve(job) extractor <- Try(Extractor(jobResolved)) handler <- Try(Handler(jobResolved, tempDir)) } yield extractor.apply(handler) ops match { case Success(seq) => { logger.debug("Created new reporting files: ", seq) ... } case Failure(exn) => { logger.error("Unable to process the job: ", ex) ... }