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.
If we didn't commit and finalize before, it will make an async call to do it. Otherwise, it would be sync.