Sounds like you can prepend a Subject that will inject the new value with merge:
private refresh$ = new Subject();
refreshProfile(...): void {
this.refresh$.next(/* whatever */);
}
getProfile(): Observable {
return this.callWS().pipe(
merge(this.refresh$),
shareReplay(1),
);
}