Closes this controller if it is still open.
Returns a Future that completes when the controller is closed.
Future<void> safeClose() { if (isClosed) return Future.value(); return close(); }