But once I am using packets of a larger size this could potentially block the rest of the program, whether that would be noticeable is very unlikely I guess.
Could it make sense to just check one per main loop that the transmission has completed? rather than using the while loop?