use series of complete callback instead of blocking semaphore, which is more noOS friendly. still working with hid host