_message linked list is being accessed in three ways: from a heartbeat loop, from the i/o eventhandler, and from the public methods of the commands -- after an await (also _messages is never enumerated with a for/foreach) await method() could cause some sort of parallelism? or could code get parallel execution by some other practice? (again, excluding creating other threads) lock or use a concurrent collection or use a channel, but i am given this tool, async/await, i have a mental model of it, but evidently something is wrong, and i cannot use it if i don't know how it works