// retoor <retoor@molodetz.nl>
import "scheduler" for Scheduler
import "timer" for Timer
var results = []
var errors = []
var handleSafe = Fn.new { |task|
var fiber = Fiber.new {
task.call()
}
var error = fiber.try()
if (error != null) {
errors.add(error)
}
}
Scheduler.add {
handleSafe.call {
results.add("good1")
}
}
Scheduler.add {
handleSafe.call {
Fiber.abort("intentional error")
}
}
Scheduler.add {
handleSafe.call {
results.add("good2")
}
}
System.print(results.count) // expect: 0
System.print(errors.count) // expect: 0
Timer.sleep(10)
System.print(results.count) // expect: 2
System.print(errors.count) // expect: 1
System.print(results[0]) // expect: good1
System.print(results[1]) // expect: good2
System.print(errors[0]) // expect: intentional error