Stream _asyncMapThen()

in lib/src/async_map.dart [114:127]


  Stream<S> _asyncMapThen<S>(
      Future<S> Function(T) convert, void Function(void) then) {
    Future<void>? pendingEvent;
    return transformByHandlers(onData: (event, sink) {
      pendingEvent =
          convert(event).then(sink.add).catchError(sink.addError).then(then);
    }, onDone: (sink) {
      if (pendingEvent != null) {
        pendingEvent!.then((_) => sink.close());
      } else {
        sink.close();
      }
    });
  }