resolve method
Completes the operation with the provided resolvable
.
Implementation
Resolvable<T> resolve(Resolvable<T> resolvable) {
if (_isResolving) {
return Sync.unsafe(Err('SafeCompleter<$T> is already resolving!'));
}
_isResolving = true;
if (isCompleted) {
return Sync.unsafe(Err('SafeCompleter<$T> is already completed!'));
}
return resolvable.resultMap((e) {
// Use a switch on the Result 'e' for exhaustive, safe handling.
switch (e) {
case Ok(value: final value):
_value = Some(value);
_completer.complete(value);
_isResolving = false;
return e;
case Err():
_completer.completeError(e);
_isResolving = false;
return e;
}
});
}