added async error throwing