rewrite router async logic

throwing an exception causes jetty to print out more warnings, because it can't send back error 500
If we do handle the response, we should not throw more exceptions.