performDispose method
actually dispose resources called in dispose() after isDisposed check
Implementation
@override
Future<void> performDispose() async {
// see subject.close() docs why it is not awaited
// ignore: unawaited_futures, avoid-ignoring-return-values
subject.close();
}