Oh, I see that you are using `connect` event to signal the connection. That makes sense. Please describe the events in the jsdoc.

The name `discard` does not feel right to me. Perhaps you can use `connect` with an event argument in a similar way as described above.

```js
if (!this.needsConnect) {
  this.emit('connect', false);
}
// later in _connect
this.emit('connect', true);
```