Execute Function using Observable
const fetchFunction = async (
request: RequestNode,
variables: Variables,
cacheConfig: CacheConfig,
uploadables: ?UploadableMap,
sink: Sink<any>,
) => {
const body = getRequestBody(request, variables, uploadables);
const headers = {
...getHeaders(uploadables),
authorization: getToken(),
};
const response = await fetchWithRetries(ENV.GRAPHQL_URL, {
method: 'POST',
headers,
body,
fetchTimeout: 20000,
retryDelays: [1000, 3000, 5000, 10000],
});
const data = await handleData(response);
if (isMutation(request) && data.errors) {
sink.error(data);
sink.complete();
return;
}
sink.next(data);
sink.complete();
};
const executeFunction = (
request: RequestNode,
variables: Variables,
cacheConfig: CacheConfig,
uploadables: ?UploadableMap,
) => {
return Observable.create(sink => {
fetchFunction(request, variables, cacheConfig, uploadables, sink);
});
};