|
// 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
|