/// <summary>
 /// Runs an ObdPid command and returns the result parsed by a provided parser
 /// </summary>
 /// <param name="command"></param>
 /// <param name="parser"></param>
 /// <returns></returns>
 public Task<object> Run(ObdPid command, Func<string, object> parser)
 {
     return Task.Run(async () =>
     {
         return parser.Invoke(await Run(command.StringValue()));
     });
 }
 /// <summary>
 /// Runs an ObdPid command and returns the result parsed by a provided parser
 /// </summary>
 /// <param name="command"></param>
 /// <param name="parser"></param>
 /// <returns></returns>
 public Task <object> Run(ObdPid command, Func <string, object> parser)
 {
     return(Task.Run(async() =>
     {
         return parser.Invoke(await Run(command.StringValue()));
     }));
 }
 /// <summary>
 /// Runs an ObdPid command and returns the result parsed by ObdParser
 /// </summary>
 /// <param name="command">OBDPid to send to ECU</param>
 /// <returns>ObdParser parsed response from ECU</returns>
 public Task<ObdResult> Run(ObdPid command)
 {
     return Task.Run(async () =>
     {
         return ObdParser.Parse(await Run(command.StringValue()));
     });
 }
 /// <summary>
 /// Runs an ObdPid command and returns the result parsed by ObdParser
 /// </summary>
 /// <param name="command">OBDPid to send to ECU</param>
 /// <returns>ObdParser parsed response from ECU</returns>
 public Task <ObdResult> Run(ObdPid command)
 {
     return(Task.Run(async() =>
     {
         return ObdParser.Parse(await Run(command.StringValue()));
     }));
 }