->cb[3] 他の AnyEvent のコールバックと同じく、例外を投げないことが期待されています。
例外が投げられた場合の扱いは実装依存です。
->croak[2] 例外を通知したい時は croak メソッドを呼び出すと良いです。
Promise における die に相当します。
->begin/->end[1] 便利ではあるのですが、複雑なプログラムになればなるほど、見通しが悪くなってデバッグ困難になります。 できれば避けるべきです。
[4] begin と end がコード上で離れていて、
しかも複数組あったりすると、どれとどれが対応関係にあるのかさっぱりわかりません。
[6] begin は1箇所で end は条件分岐があって複数箇所、
のような可読性の下がるコードを書いてしまいがちです。
[5] 一度しか実行されてないと思っていたつもりが実は複数回実行されるコールバック内で
end を呼んでいた、のように気付かないうちに実行してしまうことがあります。