/// <inheritdoc/>
        public async Task <IProcessInstanceResult> Send(TimeSpan?timeout = null, CancellationToken token = default)
        {
            // this timeout will be used for the Gateway-Broker communication
            createWithResultRequest.RequestTimeout = (long)(timeout?.TotalMilliseconds ?? DefaultGatewayBrokerTimeoutMillisecond);

            // this is the timeout between client and gateway
            var clientDeadline = TimeSpan.FromMilliseconds(createWithResultRequest.RequestTimeout +
                                                           DefaultTimeoutAdditionMillisecond).FromUtcNow();

            var asyncReply = client.CreateProcessInstanceWithResultAsync(createWithResultRequest, deadline: clientDeadline, cancellationToken: token);
            var response   = await asyncReply.ResponseAsync;

            return(new ProcessInstanceResultResponse(response));
        }