public void SendAndReceive(ISpheroCommand command, Action<ISpheroMessage> onSuccess, Action<Exception> onError) { //DoCommand(command, onSuccess, onError); var message = new CommandWithActions(command, onSuccess, onError); lock (_commandsToSend) { _commandsToSend.Enqueue(message); if (_commandsToSend.Count > 0) { _itemsReadyEvent.Set(); } } }