This may be called at most once on a build context. A function that uses this must support async cancellation by implementing CancelAsyncBuild. Once this has been called, the caller is responsible for calling EndAsyncBuild to finish this build. An async build may end from any thread, but the context is only safe to use from one thread at a time.