@override Future<void> close() async { _onClosed(); try { await _socket.close(); } catch (_) { // already closed } }