It is perfectly legal to wait for the same Async multiple times, in one or more threads, and those waits will all have the same result (unless interrupted by an exception, I guess?). This may seem "obvious", but I don't think it's explained anywhere in the documentation.