generateCleanup method
Helper method to generate a CleanupCallback
Implementation
CleanupCallback? generateCleanup({
CleanupCallback? cleanup,
bool bubbleCancellation = true,
}) {
if (!bubbleCancellation) return cleanup;
final parent = this;
if (cleanup == null) return (_) => parent.cancel();
return (acc) {
if (parent.drained) return cleanup(acc);
final futureOr = cleanup(acc);
return futureOr is Future
? futureOr.whenComplete(parent.cancel)
: parent.cancel();
};
}