You can never force VISA to do something asynchronously, you can only request it. You are making the correct calls, but NI-VISA Serial code just isn't set up to do callbacks for I/O unless your requested byte count is above some threshold.
You can set that threshold in MAX. Go to "Tools>>NI-VISA>>VISA Options..." and change the field "Minimum Async Transfer" to a lower value.
This threshold is used for all hardware interface types when the lower-level driver does not intrinsically support the VISA asynchronous requirements for the desired event mechanism (queueing or callback). In other words, this threshold does *not* apply to GPIB because NI-488 implements asynchronous I/O for both queueing and callbacks.
Dan Mondrik
National Instruments