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