Removing unused result of iree_wait_handle_wrap_primitive.
diff --git a/iree/base/internal/wait_handle.c b/iree/base/internal/wait_handle.c
index df17eb1..b3e1ed3 100644
--- a/iree/base/internal/wait_handle.c
+++ b/iree/base/internal/wait_handle.c
@@ -12,14 +12,13 @@
 // iree_wait_handle_t
 //===----------------------------------------------------------------------===//
 
-iree_status_t iree_wait_handle_wrap_primitive(
+void iree_wait_handle_wrap_primitive(
     iree_wait_primitive_type_t primitive_type,
     iree_wait_primitive_value_t primitive_value,
     iree_wait_handle_t* out_handle) {
   memset(out_handle, 0, sizeof(*out_handle));
   out_handle->type = primitive_type;
   out_handle->value = primitive_value;
-  return iree_ok_status();
 }
 
 void iree_wait_handle_deinitialize(iree_wait_handle_t* handle) {
@@ -84,8 +83,8 @@
   } else {
     iree_wait_handle_t* wait_handle =
         (iree_wait_handle_t*)out_wait_source->storage;
-    IREE_RETURN_IF_ERROR(iree_wait_handle_wrap_primitive(
-        wait_primitive.type, wait_primitive.value, wait_handle));
+    iree_wait_handle_wrap_primitive(wait_primitive.type, wait_primitive.value,
+                                    wait_handle);
     out_wait_source->ctl = iree_wait_handle_ctl;
   }
   return iree_ok_status();
diff --git a/iree/base/internal/wait_handle.h b/iree/base/internal/wait_handle.h
index 8bac3fa..134f467 100644
--- a/iree/base/internal/wait_handle.h
+++ b/iree/base/internal/wait_handle.h
@@ -59,7 +59,7 @@
 // Initializes a wait handle with the given primitive type and value.
 // Wait handles do not retain the provided primitives and they must be kept
 // valid (allocated and open) for the duration any wait handle references them.
-iree_status_t iree_wait_handle_wrap_primitive(
+void iree_wait_handle_wrap_primitive(
     iree_wait_primitive_type_t primitive_type,
     iree_wait_primitive_value_t primitive_value,
     iree_wait_handle_t* out_handle);
diff --git a/iree/base/internal/wait_handle_inproc.c b/iree/base/internal/wait_handle_inproc.c
index 2fb1342..7e0de0e 100644
--- a/iree/base/internal/wait_handle_inproc.c
+++ b/iree/base/internal/wait_handle_inproc.c
@@ -177,10 +177,8 @@
   ++set->total_handle_count;
   iree_host_size_t index = set->handle_count++;
   iree_wait_handle_t* stored_handle = &set->handles[index];
-  // NOTE: can't fail with LOCAL_FUTEX.
-  IREE_IGNORE_ERROR(iree_wait_handle_wrap_primitive(handle.type, handle.value,
-                                                    stored_handle));
-  stored_handle->set_internal.dupe_count = 0;  // just us so far
+  iree_wait_handle_wrap_primitive(handle.type, handle.value, stored_handle);
+  user_handle->set_internal.dupe_count = 0;  // just us so far
 
   return iree_ok_status();
 }
diff --git a/iree/base/internal/wait_handle_poll.c b/iree/base/internal/wait_handle_poll.c
index 8bd5b78..3c4446c 100644
--- a/iree/base/internal/wait_handle_poll.c
+++ b/iree/base/internal/wait_handle_poll.c
@@ -188,8 +188,7 @@
   iree_host_size_t index = set->handle_count++;
 
   iree_wait_handle_t* user_handle = &set->user_handles[index];
-  IREE_IGNORE_ERROR(
-      iree_wait_handle_wrap_primitive(handle.type, handle.value, user_handle));
+  iree_wait_handle_wrap_primitive(handle.type, handle.value, user_handle);
 
   // NOTE: poll will ignore any negative fds.
   struct pollfd* poll_fd = &set->poll_fds[index];
diff --git a/iree/base/internal/wait_handle_test.cc b/iree/base/internal/wait_handle_test.cc
index 637cf8a..e11a65e 100644
--- a/iree/base/internal/wait_handle_test.cc
+++ b/iree/base/internal/wait_handle_test.cc
@@ -98,8 +98,7 @@
 // These are used to neuter events in lists/sets and should be no-ops.
 TEST(Event, ImmediateEvent) {
   iree_event_t event;
-  IREE_ASSERT_OK(iree_wait_handle_wrap_primitive(IREE_WAIT_PRIMITIVE_TYPE_NONE,
-                                                 {0}, &event));
+  iree_wait_handle_wrap_primitive(IREE_WAIT_PRIMITIVE_TYPE_NONE, {0}, &event);
   iree_event_set(&event);
   IREE_EXPECT_OK(iree_wait_one(&event, IREE_TIME_INFINITE_PAST));
   iree_event_reset(&event);
diff --git a/iree/base/internal/wait_handle_win32.c b/iree/base/internal/wait_handle_win32.c
index f4adace..39ac802 100644
--- a/iree/base/internal/wait_handle_win32.c
+++ b/iree/base/internal/wait_handle_win32.c
@@ -53,8 +53,9 @@
         iree_status_code_from_win32_error(GetLastError()),
         "unable to duplicate HANDLE; possibly out of process handles");
   }
-  return iree_wait_handle_wrap_primitive(IREE_WAIT_PRIMITIVE_TYPE_WIN32_HANDLE,
-                                         value, out_target_handle);
+  iree_wait_handle_wrap_primitive(IREE_WAIT_PRIMITIVE_TYPE_WIN32_HANDLE, value,
+                                  out_target_handle);
+  return iree_ok_status();
 }
 
 // Closes an existing handle that was either created manually or via
@@ -235,8 +236,7 @@
   ++set->total_handle_count;
   iree_host_size_t index = set->handle_count++;
   iree_wait_handle_t* user_handle = &set->user_handles[index];
-  IREE_IGNORE_ERROR(
-      iree_wait_handle_wrap_primitive(handle.type, handle.value, user_handle));
+  iree_wait_handle_wrap_primitive(handle.type, handle.value, user_handle);
   user_handle->set_internal.dupe_count = 0;  // just us so far
   set->native_handles[index] = native_handle;
 
@@ -442,8 +442,9 @@
     return iree_make_status(iree_status_code_from_win32_error(GetLastError()),
                             "unable to create event");
   }
-  return iree_wait_handle_wrap_primitive(IREE_WAIT_PRIMITIVE_TYPE_WIN32_HANDLE,
-                                         value, out_event);
+  iree_wait_handle_wrap_primitive(IREE_WAIT_PRIMITIVE_TYPE_WIN32_HANDLE, value,
+                                  out_event);
+  return iree_ok_status();
 }
 
 void iree_event_deinitialize(iree_event_t* event) {
diff --git a/iree/task/poller.c b/iree/task/poller.c
index 934c768..5d21ed3 100644
--- a/iree/task/poller.c
+++ b/iree/task/poller.c
@@ -183,8 +183,12 @@
         iree_wait_source_export(task->wait_source, IREE_WAIT_PRIMITIVE_TYPE_ANY,
                                 iree_immediate_timeout(), &wait_primitive);
     if (iree_status_is_ok(status)) {
-      status = iree_wait_handle_wrap_primitive(
-          wait_primitive.type, wait_primitive.value, &wait_handle);
+      // Swap the wait handle with the exported handle so we can wake it later.
+      // It'd be ideal if we retained the wait handle separate so that we could
+      // still do fast queries for local wait sources.
+      iree_wait_handle_wrap_primitive(wait_primitive.type, wait_primitive.value,
+                                      &wait_handle);
+      status = iree_wait_source_import(wait_primitive, &task->wait_source);
     }
   }