anchor.diff:  		if (!_available.isEmpty)
   			return new Future.value(_available.removeAt(0));
   
  -		if (_count < _max) {
  +		if (_count < _max)
   			return _incConnections().then((_) {
   				if (_available.isEmpty)
   					throw new Exception('No connections available.'); //FIXME exception type.
  
positive.code: 	}
  
  	void _handleUnexpectedClose(_PoolConnection conn) {
  		if (_destroyed) return; // Expect closes while destroying connections.
  
  		print('Connection closed unexpectedly. Removed from pool.'); //TODO logging.
  		_destroy(conn);
  
  
negative.code: 
  				return c;
  			});
  
  		return _whenConnectionReleased().then((_) {
  			return connect(timeout);
  		});
  	}
  
  	// Close all connections and cleanup.
  