IMHO I can't do that - the problem is still that the actual work is being done in the caller's thread, this is what I try to avoid. Currently, the semantics of tcpip_callback is to enqueue something and return, which is a very short operation. Doing more than that before the call returns is a semantical change.