Async.sequence implementation
As far as I can tell, this should be properly tail-call optimized (see this post), but I haven't actually checked.



Consider using AsyncSeq, it could make dealing with asynchronous collections easier.