IIRC, when you have a proxy configured, the behavior of browsers can change and they may not try to resolve resources for themselves. IOW, the host may be sending the request for "localhost:3000" over to the proxy, which is then trying to hit port 3000 on the pfSense box and failing (because you presumably don't have it open / have a service on it).
I know that IE up through 11 has an option under the Proxy settings to not use the proxy for "LAN traffic." I can't remember if it's smart enough to realize that localhost is LAN (actually, on the local machine), but I suspect it is… and I think that option is enabled by default.
My hunch is that Edge is behaving the same way - sees the request for your own machine and just sends it there. Chrome is trying to send everything to the proxy, which it probably shouldn't.