コルーチンの話が出てるけど、OOの一つの課題と思ってる事があるんだ。
つまり、メッセージを送るって事は、送ると受けるという2つのオブジェクトがあるという事

例えば、データを入力する機能を持ったオブジェクトの実装では
A)InputDataというメソッドを呼び出して貰う
B)データが出来る都度 PutDataを呼び出す(最終的に外部のオブジェクトが呼ばれる)
という大きく分けて2つの方式があるけど、この2つの方式は切り替えられない。
もちろん、最初から設計してあれば、同期スレッドを使う事で可能だけど、スレッド切替
は比較的重い処理だから現実には選択肢にのぼらない。

当然使う方は Aの方式が楽で 作る方はBの方式が楽。圧縮とかの処理だと圧倒的にAが
難しくなるから、みなついBの方式で実装したがる。

あ長文になりそうだから、結論だけ書くと、
 つまりは、メッセージを送る方式の実装と メッセージを受ける方式の実装が継承により
切替られるような仕掛けが OOPLに必要ではないかという事