this is before this PR, but curious if we want to support parameter averaging in an async way? We could return futures here and then set up some scaffolding to wait on these parameters before they are used in forward pass. Or is this approach flawed? 