This requirement is because switching rendering to the shadow map throws away any rendering you previously did to the screen and starts again after the shadow map is done. If you use DrawObject then this can be avoided by inserting your DrawObject calls into the separated render calls.
Sync() calls the following three commands in order: Update(0), Render(), Swap()
Render() calls the following four commands in order: RenderShadowMap(), Render2DBack(), Render3D(), Render2DFront()
So you can replace Sync() with the follow sequence of commands
Update(0)
RenderShadowMap()
Render2DBack() // optional if you don't have any 2D items behind the 3D scene
// do all your manual rendering here
DrawObject()
Render3D() // optional if you have no other 3D rendering
Render2DFront()
Swap()
Quote: "I noticed that DrawObject() also persists after a sync() using #renderer "Basic""
This may go away with the above code, if not then can you give more details?