Ends the session as Complete() does, and returns a task that completes once the final update is applied (at once when the session already ended). Never throws: when an update throws, on the UI thread or not, the returned task is faulted with that exception instead.
public Task CompleteAsync()