class type async_in_channel =object..end
An asynchrounous input channel provides methods to input data from
 a stream descriptor. It is based on raw_in_channel, which is 
 defined by the Ocamlnet module Netchannels (see there for an 
 introduction into the idea of using objects as I/O channels).
 An asynchronous channel can indicate that there is no data in the
 input buffer. Furthermore, one can request notification in the case
 that there is no data or again data in the input buffer.
raw_in_channel method input : Stdlib.Bytes.t -> int -> int -> intinput s k n: Reads channel data into the substring of s
 beginning at index k with length n. The channel is free to
 fill only a portion of the string (or even nothing). The method 
 returns the number of bytes actually read.
The exception End_of_file indicates that the end of the channel
 is reached. The return value 0, however, means that no data
 could be read.
method close_in : unit -> unitCloses the channel
method pos_in : intReturns the number of characters read from the channel
method can_input : boolWhether input is possible, i.e. the input method gets at least
 one byte, or can signal End_of_file.
method request_notification : (unit -> bool) -> unitAfter the notification has been requested, the passed function is
 be called whenever can_input changes its value (or might change
 its value). The function returns true if there is still interest
 in notification, and false if notification must be disabled.
There can be any number of parallel active notifications. It is allowed that a notification callback requests further notifications.