private async Task<ulong> RespondAsync(Message request, CancellationToken ct, params object[] args) {
Debug.Assert(request.Name.StartsWithOrdinal("?"));
TaskUtilities.AssertIsOnBackgroundThread();
var message = CreateMessage(":" + request.Name.Substring(1), request.Id, new JArray(args));
await SendAsync(message, ct);
return message.Id;
}