I'm assuming this is a compiler age issue, but when trying to access the SyncRequest struct in a lambda it seems to use the lambda's magic C++ class definition as scope and loses the ability to access the struct due to being protected.
This works around that blemish, while also removing a bunch of extra protected declarations.