refactor: close message channel last on error