old_contents: var helper = require('./test-helper')
  var async = require('async')
  
  var testWithoutDomain = function(cb) {
    test('no domain', function() {
      assert(!process.domain)
      helper.pg.connect(helper.config, assert.success(function(client, done) {
        assert(!process.domain)
        done()
        cb()
      }))
    })
  }
  
  var testWithDomain = function(cb) {
    test('with domain', function() {
      assert(!process.domain)
      var domain = require('domain').create()
      domain.run(function() {
        var startingDomain = process.domain
        assert(startingDomain)
        helper.pg.connect(helper.config, assert.success(function(client, done) {
          assert(process.domain, 'no domain exists in connect callback')
          assert.equal(startingDomain, process.domain, 'domain was lost when checking out a client')
          var query = client.query('SELECT NOW()', assert.success(function() {
            assert(process.domain, 'no domain exists in query callback')
            assert.equal(startingDomain, process.domain, 'domain was lost when checking out a client')
            done(true)
            process.domain.exit()
            cb()
          }))
        }))
      })
    })
  }
  
  var testErrorWithDomain = function(cb) {
    test('error on domain', function() {
      var domain = require('domain').create()
      domain.on('error', function() {
        cb()
      })
      domain.run(function() {
        helper.pg.connect(helper.config, assert.success(function(client, done) {
          client.query('SELECT SLDKJFLSKDJF')
          client.on('drain', done)
        }))
      })
    })
  }
  
  async.series([
    testWithoutDomain,
    testWithDomain,
    testErrorWithDomain
  ], function() {
    helper.pg.end()
  })
  
new_contents: var async = require('async')
  
  var helper = require('./test-helper')
  var Query = helper.pg.Query
  
  var testWithoutDomain = function(cb) {
    test('no domain', function() {
      assert(!process.domain)
      helper.pg.connect(helper.config, assert.success(function(client, done) {
        assert(!process.domain)
        done()
        cb()
      }))
    })
  }
  
  var testWithDomain = function(cb) {
    test('with domain', function() {
      assert(!process.domain)
      var domain = require('domain').create()
      domain.run(function() {
        var startingDomain = process.domain
        assert(startingDomain)
        helper.pg.connect(helper.config, assert.success(function(client, done) {
          assert(process.domain, 'no domain exists in connect callback')
          assert.equal(startingDomain, process.domain, 'domain was lost when checking out a client')
          var query = client.query('SELECT NOW()', assert.success(function() {
            assert(process.domain, 'no domain exists in query callback')
            assert.equal(startingDomain, process.domain, 'domain was lost when checking out a client')
            done(true)
            process.domain.exit()
            cb()
          }))
        }))
      })
    })
  }
  
  var testErrorWithDomain = function(cb) {
    test('error on domain', function() {
      var domain = require('domain').create()
      domain.on('error', function() {
        cb()
      })
      domain.run(function() {
        helper.pg.connect(helper.config, assert.success(function(client, done) {
          client.query(new Query('SELECT SLDKJFLSKDJF'))
          client.on('drain', done)
        }))
      })
    })
  }
  
  async.series([
    testWithoutDomain,
    testWithDomain,
    testErrorWithDomain
  ], function() {
    helper.pg.end()
  })
  
subject: Make all integration tests pass