вот зачем брать асинхронный функциональный (все же это так) язык программирования и писать на нем такой вот шлак?
switch/case это дурной тон. Есть конечно варианты при которых без этого никак, но явно не в вашей задаче.
Используйте deferred объекты что бы убрать мешанину из каллбэков.
Сделайте отдельную функцию провайдер данных и вынесите из этого треша SQL. У вас тут нету классов, по сему нету и сингелтонов. Просто отдельный метод провайдер, причем он так же должен быть асинхронным.
Сделайте обертки вокруг сокетов внутри которых уже обрабатывайте исключения что бы ваш контроллер не распухал от количество try/catch блоков, ну и опять же используйте deferred объекты. Например библиотеку
Q