back to blocking calls so that exceptions can bubble until we have a true async interface