threading.Lock(): use context manager
threading.Lock(): context simplifies _send_user_message