public void ListenForData(SslStream sslStream) { readObservable = sslStream .ToStreamObservable(1) .SubscribeOn(NewThreadScheduler.Default); var encoding = Encoding.UTF8; readObservable .Select(a => encoding.GetString(a.Array, a.Offset, a.Count)) .Scan(String.Empty, (a, b) => (a.EndsWith("\n") ? "" : a) + b) .Where(a => a.EndsWith("\n")) .Subscribe((str) => { Options.Logging.Debug(str); var mappedObject = responseMapper.MapJsonResponse(str); Responses.OnNext(mappedObject); }, (e) => Responses.OnError(e), () => { Options.Logging.Debug("Read Subscription Done"); Responses.OnCompleted(); }, CancelToken); }