Fix dangling pointer in AsyncTaskManager

Bug: dawn:2349
Change-Id: I9dfcffb61cc268b7a3eb7eb1021b859b53a17e15
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/179641
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/src/dawn/native/AsyncTask.h b/src/dawn/native/AsyncTask.h
index 1a8b739..6457b92 100644
--- a/src/dawn/native/AsyncTask.h
+++ b/src/dawn/native/AsyncTask.h
@@ -75,8 +75,7 @@
 
     std::mutex mPendingTasksMutex;
     absl::flat_hash_map<WaitableTask*, Ref<WaitableTask>> mPendingTasks;
-    // TODO(crbug.com/dawn/2349): Investigate DanglingUntriaged in dawn/native.
-    raw_ptr<dawn::platform::WorkerTaskPool, DanglingUntriaged> mWorkerTaskPool;
+    raw_ptr<dawn::platform::WorkerTaskPool> mWorkerTaskPool;
 };
 
 }  // namespace dawn::native
diff --git a/src/dawn/native/Device.h b/src/dawn/native/Device.h
index 95c8dcd..0165810 100644
--- a/src/dawn/native/Device.h
+++ b/src/dawn/native/Device.h
@@ -606,7 +606,6 @@
     Ref<TextureViewBase> mExternalTexturePlaceholderView;
 
     std::unique_ptr<DynamicUploader> mDynamicUploader;
-    std::unique_ptr<AsyncTaskManager> mAsyncTaskManager;
     Ref<QueueBase> mQueue;
 
     struct DeprecationWarnings;
@@ -634,6 +633,9 @@
 
     Ref<CallbackTaskManager> mCallbackTaskManager;
     std::unique_ptr<dawn::platform::WorkerTaskPool> mWorkerTaskPool;
+
+    // Ensure `mAsyncTaskManager` is always destroyed before mWorkerTaskPool
+    std::unique_ptr<AsyncTaskManager> mAsyncTaskManager;
     std::string mLabel;
 
     CacheKey mDeviceCacheKey;