trackFuture method
Tracks f so that future will not complete until f has.
Implementation
void trackFuture(Future<void> f) {
_pending++;
if (_completer.isCompleted) {
_completer = Completer<void>();
}
unawaited(
f.then<void>((_) {}, onError: (_) {}).whenComplete(() {
_pending--;
if (_pending == 0) {
_completer.complete();
}
}),
);
}