Since after pull(), cancel() will be called, and this will lead to SIGSEGV, since there is no exception, but has_exception was not reseted in pull()