Get list of opam package dependencies

Starting from line 586 of https://github.com/ocsigen/lwt/blob/master/src/core/lwt.ml, one reads:

(* Internal name of the public [+'a Lwt.result]. The public name is defined
     later in the module. This is to avoid potential confusion with
     [Pervasives.result]/[Result.result], as the public name would not be
     prefixed with [Lwt.] inside this file. *)
  type +'a lwt_result = ('a, exn) Result.result

To understand the implementation better, I’d like to know where this Result module comes from. But it seems that it is not defined in the source of Lwt itself, so it must come from one of the dependencies of Lwt.
How can I find out where ? I tried opam show lwt but it didn’t tell me what other packages lwt depended on.

could Result be the compatibility package which introduces the result type for older ocaml versions which did not have it? it’s in opam as result.

<><> Version-specific details <><><><><><><><><><><><><><><><><><><><><><><><><>
version       4.1.0
repository    mirror
url.src:      "https://github.com/ocsigen/lwt/archive/4.1.0.tar.gz"
url.checksum: "md5=e919bee206f18b3d49250ecf9584fde7"
homepage:     "https://github.com/ocsigen/lwt"
bug-reports:  "https://github.com/ocsigen/lwt/issues"
dev-repo:     "git+https://github.com/ocsigen/lwt.git"
authors:      "Jérôme Vouillon" "Jérémie Dimino"
maintainer:   "Anton Bachin <antonbachin@yahoo.com>"
              "Mauricio Fernandez <mfp@acm.org>"
              "Simon Cruanes <simon.cruanes.2007@m4x.org>"
license:      "LGPL with OpenSSL linking exception"
depends:      "ocaml" {>= "4.02.0"}
              "cppo" {build & >= "1.1.0"}
              "jbuilder" {build & >= "1.0+beta14"}
              "ocamlfind" {build & >= "1.7.3-1"}
              "result"
depopts:      "base-threads" "base-unix" "conf-libev"
conflicts:    "ocaml-variants" {= "4.02.1+BER"}
synopsis      Promises, concurrency, and parallelized I/O
description   A promise is a value that may become determined in the future.
              Lwt provides typed, composable promises. Promises that are resolved by I/O are
              resolved by Lwt in parallel.
              Meanwhile, OCaml code, including code creating and waiting on promises, runs in
              a single thread by default. This reduces the need for locks or other
              synchronization primitives. Code can be run in parallel on an opt-in basis.

This is part of the output of opam show lwt. It shows the list of dependencies, including result.

For recent versions of ocaml, the result type is defined in the stdlib: https://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#1_Resulttype