code: function onSuccess(response, responseObj) {
            onTimelyResponse(spec.code);
  
            try {
              response = JSON.parse(response);
            } catch (e) { /* response might not be JSON... that's ok. */ }
  
            // Make response headers available for #1742. These are lazy-loaded because most adapters won't need them.
            response = {
              body: response,
              headers: headerParser(responseObj)
            };
            responses.push(response);
  
            let bids;
            try {
              bids = spec.interpretResponse(response, request);
            } catch (err) {
              logError(`Bidder ${spec.code} failed to interpret the server's response. Continuing without bids`, null, err);
              onResponse();
              return;
            }
  
            if (bids) {
              if (bids.forEach) {
                bids.forEach(addBidUsingRequestMap);
              } else {
                addBidUsingRequestMap(bids);
              }
            }
            onResponse(bids);
  
            function addBidUsingRequestMap(bid) {
              const bidRequest = bidRequestMap[bid.requestId];
              if (bidRequest) {
                const prebidBid = Object.assign(createBid(CONSTANTS.STATUS.GOOD, bidRequest), bid);
                addBidWithCode(bidRequest.adUnitCode, prebidBid);
              } else {
                logWarn(`Bidder ${spec.code} made bid for unknown request ID: ${bid.requestId}. Ignoring.`);
              }
            }
  
            function headerParser(xmlHttpResponse) {
              return {
                get: responseObj.getResponseHeader.bind(responseObj)
              };
            }
          }
docs: If the server responds successfully, use the adapter code to unpack the Bids from it. If the adapter code fails, no bids should be added. After all the bids have been added, make sure to call the `onResponse` function so that we're one step closer to calling done().