transf<R extends Object> method

SafeCompleter<R> transf<R extends Object>([
  1. @noFuturesAllowed R noFuturesAllowed(
    1. T e
    )?
])

Transforms the type of the value managed by this SafeCompleter.

Implementation

SafeCompleter<R> transf<R extends Object>([
  @noFuturesAllowed R Function(T e)? noFuturesAllowed,
]) {
  final completer = SafeCompleter<R>();
  resolvable().map((e) {
    try {
      final result = noFuturesAllowed != null
          ? noFuturesAllowed(e)
          : (e as R);
      completer.resolve(Sync<R>.unsafe(Ok(result))).end();
    } catch (e) {
      completer
          .resolve(Sync.unsafe(Err('Failed to transform type $T to $R.')))
          .end();
    }
    return e;
  }).end();
  return completer;
}