By default, the Waker prohibits duplication of event objects in the Waker. However, if an object is both awaited and simultaneously acts as a cancellation token, such a situation is possible and must be handled.
Other edge cases are also possible, such as await($obj, $obj), which must be handled correctly.