code: def serve(self, handler):
          
          assert handler, "handler is required"
  
          while not self.closed:
              message = yield self.await()
  
              try:
                  handler(message, self)
              except Exception:
                  # TODO Send error frame back
                  log.exception("Failed to process %s", repr(message))
docs: Serve calls over this connection using the given RequestHandler.
  
          :param handler:
              RequestHandler to process the requests through
          :return:
              A Future that resolves (to None) once the loop is done running --
              which happens once this connection is closed.