FindInstrument(string symbol)
        {
            var resp = await _rawClient.FindInstrument(symbol).ConfigureAwait(false);

            var result = new PagedJsonResponse <Instrument>(resp, item => new Instrument(item));

            return(result.Items);
        }
        DownloadOrders(DateTime updatedAt)
        {
            var json = await _rawClient.DownloadOrders(updatedAt).ConfigureAwait(false);

            var result = new PagedJsonResponse <OrderSnapshot>(json, item => new OrderSnapshot(item));

            return(result.Items);
        }
        downloadPagedResult <TResult> (
            PagedResponse <TResult> .Cursor cursor,
            Func <string, Task <JToken> > downloader,
            Func <JToken, TResult> decoder)
        {
            var resp   = await downloader(cursor == null?null : cursor.Uri.ToString()).ConfigureAwait(continueOnCapturedContext: false);;
            var result = new PagedJsonResponse <TResult>(resp, decoder);

            return(result);
        }
        downloadPagedResult <TResult> (
            PagedResponse <TResult> .Cursor cursor,
            Func <string, Task <JToken> > downloader,
            Func <JToken, TResult> decoder)
        {
            var resp = await downloader(cursor == null?null : cursor.Uri.ToString());

            var result = new PagedJsonResponse <TResult>(resp, decoder);

            return(result);
        }