In your situation, you did not need the case because you handled the result via handle_info. If you did not subscribe to the topic and handle_info, then you would need to case on the result of Todos.delete_todo/1 to know when it was successful to filter out the deleted todo in our assigns :todos. Or else if you just called the function, the view would not update because you would have sent back the same socket you got at the beginning. Then you would only see the updated changes if you refresh your page manually