improve ErrorHandler, add sync execute method