/// <summary>
        ///     Returns a stream to read the contents from Amazon S3 as
        ///     specified by the <c>TransferUtilityOpenStreamRequest</c>.
        ///     The caller of this method is responsible for closing the stream.
        /// </summary>
        /// <param name="request">
        ///     Contains all the parameters required for the OpenStream operation.
        /// </param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        public async Task <Stream> OpenStreamAsync(TransferUtilityOpenStreamRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            OpenStreamCommand command = new OpenStreamCommand(this._s3Client, request);
            await command.ExecuteAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);

            return(command.ResponseStream);
        }