public virtual Func<IHub, Task> BuildReconnect(Func<IHub, Task> reconnect) { return (hub) => { if (OnBeforeReconnect(hub)) { return reconnect(hub).OrEmpty().Then(h => OnAfterReconnect(h), hub); } return TaskAsyncHelper.Empty; }; }