add ReponseHandle protocol to support more flexible http handler