I just wrote an awesome Task<T> extension to support async recursion...