moved removeAllListeners in destroy so we also handle cases where we're not connected.