connection: use ~~process.nextTick~~ setImmediate

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.