This stuff strongly resembles me the "delayed evaluation" mechanism popular in some high-level non-C languages. Like, functional objects, closures, continuations (in Scheme) or promises (in E-Rights). Too bad that functions are not 1st-class objects in C so they could not be made asynchronous in unified way (by wrapping, decoration, or whatever).