/// <summary> /// Send a message to the resource being observed that we want to cancel /// the observation. /// </summary> public void ProactiveCancel() { Request cancel = Request.NewGet(); // copy options, but set Observe to cancel cancel.SetOptions(Request.GetOptions()); cancel.MarkObserveCancel(); // use same Token cancel.Token = Request.Token; cancel.Destination = Request.Destination; // dispatch final response to the same message observers cancel.CopyEventHandler(Request); cancel.Send(_endpoint); // cancel old ongoing request Request.IsCancelled = true; Canceled = true; }