I have my web requests handled by this code;
Response = await Client.SendAsync(Message, HttpCompletionOption.ResponseHeadersRead, CToken);
Since returns a task, you can Wait for the Task which essentially is equivalent to specifying a timeout:
// grab the task object
var reader = response.Content.ReadAsStringAsync();
// so you're telling the reader to finish in X milliseconds
var timedOut = reader.Wait(X);
if (timedOut)
{
// handle timeouts
}
else
{
return reader.Result;
}