response: fix missing socket error

not sure why this is, but sometimes `this.socket` is empty. seems like it sometimes exists on `req` but not `res`.

currently, the code is borked because you have a `stream` variable inside `.push()` as well as outside. now, the error is properly emitted.

also moved the error outside the next tick so there's a proper stack trace