Description
propagateResult is an anti-pattern; we should instead handle timeout via a Promise.race and try/catch/finally, similar to how the evaluator now does it.
Completion checklist
- WRITE A TEST for the timeout case!
- Before closing this task, review one by one the checklist available here: https://www.mediawiki.org/wiki/Abstract_Wikipedia_team/Definition_of_Done#Back-end_Task/Bug_completion_checklist