private void OnResponse(byte[] response) { Task.Run(() => { var zmqResponse = ZmqResponse.FromBinary(response); TaskCompletionSource <ResponseData> callback; if (this.requestCallbacks.TryRemove(zmqResponse.RequestId, out callback)) { callback.SetResult(zmqResponse.Response); } }); }