     toClear = device.set(sessionContext.deviceData, ['VirtualParameters', vparams[i][0]], timestamp, vpu, toClear)
 
   clear(sessionContext, toClear, (err) ->
-    return rpcRequest(sessionContext, null, callback)
+    return callback(err) if err
+    rpcRequest(sessionContext, null, callback)
   )
 
 

  if not provisions
    sessionContext.rpcRequest = generateGetRpcRequest(sessionContext)
    if not sessionContext.rpcRequest
      if sessionContext.deviceData.changes.has('prerequisite')
        delete sessionContext.syncState
        device.clearTrackers(sessionContext.deviceData, 'prerequisite')
        return rpcRequest(sessionContext, null, callback)

      toClear = null
      timestamp = sessionContext.timestamp + sessionContext.iteration + 1


              toClear = device.set(sessionContext.deviceData, p, timestamp, {value: [timestamp, v]}, toClear)
      )

      if toClear or sessionContext.deviceData.changes.has('prerequisite')
        return clear(sessionContext, toClear, (err) ->
          return callback(err) if err
          rpcRequest(sessionContext, null, callback)
        )

      provisions = generateSetVirtualParameterProvisions(sessionContext, sessionContext.syncState.virtualParameterDeclarations[inception])
      if not provisions
