The signature of ntci::Proactor::cancel() implies that is synchronous, but it is likely that for some implementations cancelation must be implemented asynchronously. Enhance the contract of ntci::Proactor::cancel to call a new function, ntci::ProactorSocket::processCanceled(), when all pending operations are canceled.