public void OnResponseMessage(ResponseMessage response, MessageHandleContext currentAtomicContext)
{
ResponseWaitingItem waitingItem;
if (_responseWaitingItems.TryRemove(response.RequestId, out waitingItem) == false)
{
return;
}
// Because OnResponseMessage is always called in a message loop of actor,
// it's safe to run post callback synchronously if possible.
// This optimization remove one message hop.
ActorSynchronizationContext.EnableSynchronousPost(currentAtomicContext);
waitingItem.ResponseHandler(waitingItem.TaskCompletionSource, response);
}