Finally fixed "Can't set headers after they are sent" error

When the request times out, it will return {timeout: true} and
abort the request. When the request is aborted, it will trigger
the 'error' event which will try to return *another* response.
Since the first response is already returned, this second response
causes an uncaughtException that headers are already sent.
Upgrade dependencies