public Task <TResponseType> GetResponse(Predicate <TResponseType> filter)
 {
     return(_communicator.GetResponseStream().VerifyConnected(CurrentStatus)
            .Select(TryDeSerialize)
            .Where(payLoad => payLoad != null && filter(payLoad))
            .FirstAsync().ToTask());
 }