Мне кажется, ваш код довольно чистый. Я не уверен, что вы могли бы упростить эту задачу, если вам нужна закрытая функция с открытым обработчиком;
Единственный недостаток этого метода, который я вижу, - это невозможность переопределить someCallback, но я не сталкивался с реальными проблемами с этим. Я думаю, что в более крупных проектах имеет смысл создать целый новый класс, связанный с управлением вызовами клиент / сервер, т. Е.
nc.client = new ConnectionClient(nc, myself);
Другой метод может заключаться в том, чтобы обрабатывать все вызовы функций самостоятельно, то есть заставить все вызовы сервера вызывать один открытый метод, а затем самостоятельно определять, что происходит на основе этих вызовов.
Вы могли бы также иметь события отправки вашего клиента, а не привязываться напрямую к методам. Это добавит слой между вызовами сервера и вашим классом, но он может быть «чище» для более крупных проектов.
Чистота очень субъективна:)