connection: use process.nextTick

This is really just two types of changes in many places:

1. Use...
  ```js
  if (err) {
    callback(err);
    return;
  }
  ````
  ...as opposed to anything else.

2. Use `process.nextTick` in two places to simulate an async operation.
Sometimes we defer to an async process to connect, but if we're already connected, it would be sync.