public void StartAsyncWork()
        {
            _executedSynchronously = false;
            _startTime             = DateTime.Now;

            try
            {
                Task task = _endpointHandler.ProcessRequestAsync(_httpRequest, _httpResponse, OperationName);
                task.ContinueWith(t =>
                {
                    if (t.Exception != null)
                    {
                        Log.Error("Error happened in async service execution!", t.Exception.InnerException ?? t.Exception,
                                  new Dictionary <string, string>()
                        {
                            { "ErrorCode", "FXD300079" }
                        });
                    }

                    PostWorkItemExecutionCallbackSafe();
                });
            }
            catch (Exception ex)
            {
                try
                {
                    var operation = EndpointHost.MetadataMap[ServicePath].OperationNameMap[OperationName];
                    var response  = ErrorUtils.CreateFrameworkErrorResponse(_httpRequest, ex, operation.ResponseType);
                    _httpResponse.WriteToResponse(_httpRequest, response);
                }
                catch (Exception ex1)
                {
                    Log.Error("Error happened when writing framework error response!", ex1, new Dictionary <string, string>()
                    {
                        { "ErrorCode", "FXD300082" }
                    });
                }

                PostWorkItemExecutionCallbackSafe();
            }
        }