Refactoring long polling transport to be able to fix bug #3227

This needs to go back to taking in `reconnectInvoker` as a parameter. It's important that the same `_reconnectInvoker` that's present when `TryDelayedReconnect` is called is used by `TryReconnect` when it is called after the delay.