node.js では、コールバック関数の最初の引数としてエラー メッセージを返すのが一般的です。純粋な JS (Promise、Step、seq など) でこの問題を解決する方法は多数ありますが、いずれも ICS と統合できるようには見えません。読みやすさをあまり損なわずにエラーを処理するための正しい解決策は何でしょうか?
例えば:
# makes code hard to read and encourage duplication
await socket.get 'image id', defer err, id
if err # ...
await Image.findById id, defer err, image
if err # ...
await check_permissions user, image, defer err, permitted
if err # ...
# will only handle the last error
await
socket.get 'image id', defer err, id
Image.findById id, defer err, image
check_permissions user, image, defer err, permitted
if err # ...
# ugly, makes code more rigid
# no way to prevent execution of commands if the first one failed
await
socket.get 'image id', defer err1, id
Image.findById id, defer err2, image
check_permissions user, image, defer err3, permitted
if err1 || err2 || err3 # ...