throw if there is no callback to client.func