in libraries/Streaming/StreamingConversations.cs [189:219]
        public async Task<ResourceResponse> UpdateActivityAsync(string conversationId, string activityId, Activity activity, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (SocketClient == null)
            {
                throw new InvalidOperationException("Connection is not opened.");
            }
            var request = new StreamingRequest()
            {
                Verb = "PUT",
                Path = $"/v3/directline/conversations/{conversationId}/activities/{activityId}"
            };
            request.SetBody(activity);
            var response = await SocketClient.SendAsync(request).ConfigureAwait(false);
            if (response.StatusCode != 200)
            {
                var body = await response.ReadBodyAsStringAsync().ConfigureAwait(false);
                var ex = new OperationException(
                    $"Operation returned an invalid status code '{response.StatusCode}'",
                    response.StatusCode,
                    body);
                throw ex;
            }
            var resourceResponse = await response.ReadBodyAsJsonAsync<ResourceResponse>().ConfigureAwait(false);
            return resourceResponse;
        }