previous wrap is no good: the caller knows wether any of the arguments are futures
renamed to tasync (since it is an async library)