unsafe fn replace_waker(self_arc: &mut Arc<Self>, cx: &Context<'_>) {
        unsafe { *self_arc.inner_waker.get() = cx.waker().clone().into() }
    }
Replaces given waker's inner_waker for polling stream/futures which will
update poll state on `wake_by_ref` call. Use only if you need several
contexts.

## Safety

This function will modify waker's `inner_waker` via `UnsafeCell`, so
it should be used only during `POLLING` phase by one thread at the time.
futures-util/src/stream/stream/flatten_unordered.rs