docs: function fetchDeviceListCycle(sources) {
    const accessToken$ = accessTokenSelector$(sources.STATE);
  
    const request$ = sources.ACTION.filter(
      action => action.type === FETCH_DEVICE_LIST,
    ).combineLatest(accessToken$, (action, accessToken) => ({
      url: '/api/devices',
      method: 'GET',
      headers: { Authorization: `Bearer ${accessToken}` },
      category: FETCH_DEVICE_LIST,
    }));
  
    const response$ = sources.HTTP.select(FETCH_DEVICE_LIST).switchMap(success);
  
    const action$ = Observable.from([
      request$.mapTo(uiActions.setLoading()),
      response$.pluck('body', 'data').map(setDeviceList),
      response$.mapTo(uiActions.setLoaded()),
    ]).mergeAll();
  
    return {
      ACTION: action$,
      HTTP: request$,
    };
  }