Dropping a Task cancels it, which means its future won’t be polled again. To drop the Task handle without canceling it, use detach() instead.
Thus, let _ = spawn immediately cancels the sending task. This is different from Tokio, where detaching is the default behavior.
When you encounter surprising behavior, try reading the documentation of all the functions and types you are using, even if you think you know how they work — there is often a detail that matters.