cancel method
Cancels the signal. reason is used to dereive
the result of the future, using ConnectException.from.
Noop after the first call.
Implementation
void cancel([Object? reason]) {
if (_completer.isCompleted) return;
_completer.complete(
super.errorFromReason(reason, Code.canceled, 'operation canceled'),
);
}