public static Session <S, E, P> Wait <S, E, P>(this Session <S, E, P> session) where S : SessionType where E : SessionStack where P : ProtocolType { if (session is null) { throw new ArgumentNullException(nameof(session)); } session.CallSimply(); session.WaitForLastTask(); return(session.Duplicate()); }