actually dispose resources called in dispose() after isDisposed check
@override Future<void> performDispose() async { await disposeCallback(); }