Jak poprawnie obsługiwać błędy w IcedCoffeeScript?
Powszechną praktyką w node.js jest zwracanie komunikatu o błędzie jako pierwszego argumentu funkcji wywołania zwrotnego. Istnieje wiele rozwiązań tego problemu w czystym JS (Promise, Step, seq itp.), Ale żaden z nich nie wydaje się być integrowalny z ICS. Jakie byłoby właściwe rozwiązanie problemu błędów bez utraty czytelności?
Na przykład:
# 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 # ...