On Windows, after a connect attempt has failed, an error event with
ECONNRESET is emitted after the real connect error is propagated to the
connect callback, because the connection is not in ending state
(connection._ending) where ECONNRESET is ignored. This change ends the
connection when connect has failed.
This fixes#746.
* Avoid infinite loop on malformed message
If handling of such messages is deemed unimportant, `indexOf` is still faster (~40%) and cleaner than a manual loop.
Addresses #1048 to an extent.
* Use indexOf fallback for Node ≤0.12
They were disabled by 4cdd7a116b without comment; it seems that this might have been unintentional?
In any case, they should probably be enabled, updated, or removed.
* Use container-based CI
* Remove unnecessary CI configuration
* Use Node 6/PostgreSQL 9.6 as default test
… rather than testing 0.10 twice with unspecified PostgreSQL.
* Use `precise` for PostgreSQL 9.1
According to https://docs.travis-ci.com/user/database-setup/, 9.1 isn’t supported on trusty.
* Fix Node 0.10 and 0.12 CI builds
These binaries appear to have been built using g++ with flags that clang doesn’t support. Or something.
Setting PostgreSQL 9.5 as the main version to test against.
NOTE: The following settings are required for 9.5 to work:
```
sudo: required
dist: trusty
```
A long standing bug was the pure JS client didn't accept or call a callback on `client.end`. This is inconsistent with both the documentation & general node patterns.
This fixes the issue & adds a test. The issue did not exist in the native version of the client.
The promise adapter I had implemented wasn't spec compliant: it didn't accept both `onSuccess` and `onFailure` in the call to `query#then`. This subtly broke yield & async/await because they both rely on `onError` being passed into `Promise#then`. The pool was also not returning the promise after a client was acquired, which broke awaiting on `pool.connect` - this is also fixed now.