public virtual Func<IHub, Task> BuildConnect(Func<IHub, Task> connect) { return hub => { if (OnBeforeConnect(hub)) { return connect(hub).OrEmpty().Then(h => OnAfterConnect(h), hub); } return TaskAsyncHelper.Empty; }; }