https://blog.nelhage.com/post/concurrent-error-handling/