whole_func_string: function doCallEndpoint(callSpec, next, onReceive, onError, store) {
    const { method, path, urlParams, body, token, baseUrl } = callSpec
    return apiFetch(compileUrl(path, urlParams), { ...fetchOptions(method, body, token), baseUrl })
      .then(response =>
        // TODO
        // if (response.status === 401) {
        //   next(unauthorized());
        // }
        (response.ok
          ? response.json().then(json => next(transformReceiveAction(onReceive((json)), store)))
          // TODO: error parsing should be configurable globally (here we assume that a json object comes
          // with { error: { message } }
          : response.json().then(json => next(onError(json.error.message))))
      )
      .catch(error => {
        // console.error('ERROR on API Call', error)
        next(onError(error.message))
      })
  }
func_code_string: function doCallEndpoint(callSpec, next, onReceive, onError, store) {
    const { method, path, urlParams, body, token, baseUrl } = callSpec
    return apiFetch(compileUrl(path, urlParams), { ...fetchOptions(method, body, token), baseUrl })
      .then(response =>
        // TODO
        // if (response.status === 401) {
        //   next(unauthorized());
        // }
        (response.ok
          ? response.json().then(json => next(transformReceiveAction(onReceive((json)), store)))
          // TODO: error parsing should be configurable globally (here we assume that a json object comes
          // with { error: { message } }
          : response.json().then(json => next(onError(json.error.message))))
      )
      .catch(error => {
        // console.error('ERROR on API Call', error)
        next(onError(error.message))
      })
  }
func_documentation_string: /* eslint-disable no-console