Blocks-as-callbacks work only for the case where there is exactly one callback parameter specified for the function, when the function is called with a block, and the number of arguments passed is one less than the number specified, then pass the block as the callback.
Its in Call.c, line 86.
Not supported for varargs functions.