public async Task <IValueProvider> BindAsync(IStorageBlob blob, ValueBindingContext context)
            {
                WatchableReadStream watchableStream = await ReadBlobArgumentBinding.TryBindStreamAsync(blob, context);

                if (watchableStream == null)
                {
                    return(BlobValueProvider.CreateWithNull <TextReader>(blob));
                }

                TextReader reader = ReadBlobArgumentBinding.CreateTextReader(watchableStream);

                return(new BlobWatchableDisposableValueProvider(blob, reader, typeof(TextReader),
                                                                watcher: watchableStream, disposable: reader));
            }
            public async Task <IValueProvider> BindAsync(IStorageBlob blob, ValueBindingContext context)
            {
                WatchableReadStream watchableStream = await ReadBlobArgumentBinding.TryBindStreamAsync(blob, context);

                if (watchableStream == null)
                {
                    return(BlobValueProvider.CreateWithNull <string>(blob));
                }

                string       value;
                ParameterLog status;

                using (watchableStream)
                    using (TextReader reader = ReadBlobArgumentBinding.CreateTextReader(watchableStream))
                    {
                        context.CancellationToken.ThrowIfCancellationRequested();
                        value = await reader.ReadToEndAsync();

                        status = watchableStream.GetStatus();
                    }

                return(new BlobWatchableValueProvider(blob, value, typeof(string), new ImmutableWatcher(status)));
            }