/// <summary>
        /// Deletes a high-availability partition group.
        /// </summary>
        /// <param name="hapgArn">The ARN of the high-availability partition group to delete.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        ///
        /// <returns>The response from the DeleteHapg service method, as returned by CloudHSM.</returns>
        /// <exception cref="Amazon.CloudHSM.Model.CloudHsmInternalException">
        /// Indicates that an internal error occurred.
        /// </exception>
        /// <exception cref="Amazon.CloudHSM.Model.CloudHsmServiceException">
        /// Indicates that an exception occurred in the AWS CloudHSM service.
        /// </exception>
        /// <exception cref="Amazon.CloudHSM.Model.InvalidRequestException">
        /// Indicates that one or more of the request parameters are not valid.
        /// </exception>
        public Task <DeleteHapgResponse> DeleteHapgAsync(string hapgArn, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var request = new DeleteHapgRequest();

            request.HapgArn = hapgArn;
            return(DeleteHapgAsync(request, cancellationToken));
        }
        internal DeleteHapgResponse DeleteHapg(DeleteHapgRequest request)
        {
            var marshaller   = new DeleteHapgRequestMarshaller();
            var unmarshaller = DeleteHapgResponseUnmarshaller.Instance;

            return(Invoke <DeleteHapgRequest, DeleteHapgResponse>(request, marshaller, unmarshaller));
        }
        /// <summary>
        /// Initiates the asynchronous execution of the DeleteHapg operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the DeleteHapg 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 Task <DeleteHapgResponse> DeleteHapgAsync(DeleteHapgRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new DeleteHapgRequestMarshaller();
            var unmarshaller = DeleteHapgResponseUnmarshaller.Instance;

            return(InvokeAsync <DeleteHapgRequest, DeleteHapgResponse>(request, marshaller,
                                                                       unmarshaller, cancellationToken));
        }