Async task with timeout
private async Task&lt;MyResult&gt; CheckItAsync(CheckRequest rqst, int timeout)  



Never use abbreviations neither for method arguments not for variable/method/class names. A few more characters to make the name meaningful doesn't slow down the code nor does it increase the code size in a bad way. In fact you are saving yourself a lot of time if you come back in a few weeks/months to fix some bugs because you see at first glance what it is about.  


MyResult Result = new MyResult()  



This is a classname which doesn't tell what the class is about. Sure it will be some kind of result of some kind of operation but it neither tells what kind of result this is nor from which operation that result is coming. You could name it Result and it would have the same meaning (both times no meaning).  

Variables names should be named using camelCase casing based on the .NET naming guidelines.  


RemoteResponse response;  



Variables should be placed as near to their usage as possible. Here you have placed this outside of the try..catch but you use it only in the try block.  


Result.populate(response);  



Methods should be named using PascalCase casing, hence populate should become Populate. The same is true for the other MyResult methods.  


// Task timed out, populate result with timeout message
Result.timedOut(rqst.RequestNumber);  



Comments should tell the reader why something is done in the way it is done. What is done should be told by the code itself using meaningful names for classes, methods, properties and variables. Furthermore comments shouldn't lie like this comment is doing. The result isn't populated with a timeout message but with the RequestNumber of the CheckRequest.  

Because methodnames should be made out of verbs or verb phrases timedOut isn't a good name for a method.