We can register a callback with an RSocket using the onClose method. We do not currently have any way to deregister a previously registered callback.
Motivation
I'm sure there are other use cases, however, this would be useful when paired with the useEffect hook in React, which expect to be able to "undo" registrations and side-effects.
RSocket, likely through Closeable, could be extended to allow deregistration of callbacks. This might be best with having Closeable more closely resemble event emitter APIs.
// add a listener
const id = rsocket.onClose.addEventListener(() => {...});
// remove a listener
rsocket.onClose.removeEventListener(id);
Considered alternatives
Rsocket.onClose could implement/expose an observable that would natively support subscriptions. This could use existing types such as Cancellable and OnTerminalSubscriber.
We can register a callback with an
RSocket
using theonClose
method. We do not currently have any way to deregister a previously registered callback.Motivation
I'm sure there are other use cases, however, this would be useful when paired with the
useEffect
hook in React, which expect to be able to "undo" registrations and side-effects.Desired solution
RSocket
, likely throughCloseable
, could be extended to allow deregistration of callbacks. This might be best with havingCloseable
more closely resemble event emitter APIs.Considered alternatives
Rsocket.onClose
could implement/expose an observable that would natively support subscriptions. This could use existing types such asCancellable
andOnTerminalSubscriber
.