'Called in async handlers if the client closed the connection.
Override this to clean up resources associated with
long-lived connections.  Note that this method is called only if
the connection was closed during asynchronous processing; if you
need to do cleanup after every request override `on_finish`
instead.
Proxies may keep a connection open for a time (perhaps
indefinitely) after the client has gone away, so this method
may not be called promptly after the end user closes their
connection.'

def on_connection_close(self):

    if _has_stream_request_body(self.__class__):
        if (not self.request.body.done()):
            self.request.body.set_exception(iostream.StreamClosedError())
            self.request.body.exception()
