simplify and fix a bug with connection errors when using promises

There was a bug when using promises and getting a connection error because `cb` was attempting to be called by `okay` with the error but `cb` was undefined. This bug would crash the process instead of being handled by the promise.  This change simplifies the cb/promise handling code and fixes the bug.  I am not sure how to write a test with a failing connection or I would add it.  Also, the rows and results are passed as an array to the promise success handler and you can use `when`'s `spread` method to receive them as separate args.