Dear all, When we wrote bindings for promise, we want to express things (simplified ) like below: class type ['b] promise = object method then_ : 'a . ('b -> 'a promise) -> 'a promise end It is not expressible in OCaml, The universal type variable 'a can not be generalized, I tried this too: type 'b promise = < then_ : 'a . ('b -> 'a u) -> 'a u > It does not work either, thanks -- Hongbo