feature(socket) addListener: first parameter could be object