質問です

今ソースを読んでいるのですが、
ISOURCE_Read()とISOURCE_Readable()の関連性がどうにも分かりません
APIリファレンス読むと_Readable系は大概

『〜_Read()が「現在は使用可能なデータがない場合」以外を返す場合に、コールバックをスケジュールまたはキャンセルします』

と書いてありますが、コールバックが呼ばれるタイミングが分かりません。
_Read()の後も_Readable()の後も普通に進行していき、コールバックを抜けた後
どこをどう通ったのか分かりませんがコールバックが呼ばれます。
また、_Read()の戻り値と_Readable()の関係が謎です。
_Readable()の中で_Reada()を読んで戻り値を参照してる?