More fixes to `promise()` logic relating to chain resolution, updated `client.request()` to return a chained promise for expected results if chaining it