Proper worker and runner shutdown handling, and better error handling
Explain message flow