this mirrors the changes in the networking code, and ensures we don't hold a semaphore that may be held by the main thread when we are doing CAN sends
this allows any serial protocol to be mapped to a remote DroneCAN node